Index: gtk2_ardour/editor_ops.cc
===================================================================
--- gtk2_ardour/editor_ops.cc	(revision 2858)
+++ gtk2_ardour/editor_ops.cc	(working copy)
@@ -1772,6 +1772,45 @@
 	reposition_and_zoom (new_leftmost, new_fpu);
 }
 
+
+bool
+Editor::name_new_marker(string &name) {
+
+	if (!Config->get_name_new_markers()) {
+		return true;
+	}
+
+	ArdourPrompter dialog (true);
+
+	dialog.set_prompt (_("New Name:"));
+
+	WindowTitle title(Glib::get_application_name());
+	title += _("Name New Location Marker");
+
+	dialog.set_title(title.get_string());
+
+	dialog.set_name ("MarkNameWindow");
+	dialog.set_size_request (250, -1);
+	dialog.set_position (Gtk::WIN_POS_MOUSE);
+
+	dialog.add_button (Stock::OK, RESPONSE_ACCEPT);
+	dialog.set_initial_text (name);
+
+	dialog.show ();
+
+	switch (dialog.run ()) {
+	case RESPONSE_ACCEPT:
+		break;
+	default:
+		return false;
+	}
+	
+	dialog.get_result(name);
+	return true;
+
+}
+
+
 void
 Editor::add_location_from_selection ()
 {
@@ -1807,6 +1846,9 @@
 	select_new_marker = true;
 
 	session->locations()->next_available_name(markername,"mark");
+	if (!name_new_marker(markername)) {
+		return;
+	}
 	Location *location = new Location (where, where, markername, Location::IsMark);
 	session->begin_reversible_command (_("add marker"));
         XMLNode &before = session->locations()->get_state();
@@ -1947,6 +1989,9 @@
 	}
 
 	session->locations()->next_available_name(markername,"mark");
+	if (!name_new_marker(markername)) {
+		return;
+	}
 	session->locations()->add (new Location (pos, 0, markername, Location::IsMark), true);
 }
 
Index: gtk2_ardour/location_ui.cc
===================================================================
--- gtk2_ardour/location_ui.cc	(revision 2858)
+++ gtk2_ardour/location_ui.cc	(working copy)
@@ -600,6 +600,12 @@
 	i_am_the_modifier--;
 }
 
+void
+LocationEditRow::focus_name() {
+	name_entry.grab_focus();
+}
+
+
 LocationUI::LocationUI ()
 	: ArdourDialog ("locations dialog"),
 	  add_location_button (_("Add New Location")),
@@ -628,6 +634,8 @@
 	location_rows_scroller.set_name ("LocationLocRowsScroller");
 	location_rows_scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
 	location_rows_scroller.set_size_request (-1, 130);
+	
+	newest_location = 0;
 
 	loc_frame_box.set_spacing (5);
 	loc_frame_box.set_border_width (5);
@@ -789,6 +797,10 @@
 			erow->remove_requested.connect (mem_fun(*this, &LocationUI::location_remove_requested));
  			erow->redraw_ranges.connect (mem_fun(*this, &LocationUI::location_redraw_ranges));
 			loc_children.push_back(Box_Helpers::Element(*erow, PACK_SHRINK, 1, PACK_START));
+			if (location == newest_location) {
+				newest_location = 0;
+				erow->focus_name();
+			}
 		}
 		else if (location->is_auto_punch()) {
 			punch_edit_row.set_session (session);
@@ -818,6 +830,9 @@
 		nframes_t where = session->audible_frame();
 		session->locations()->next_available_name(markername,"mark");
 		Location *location = new Location (where, where, markername, Location::IsMark);
+		if (Config->get_name_new_markers()) {
+			newest_location = location;			
+		}
 		session->begin_reversible_command (_("add marker"));
 		XMLNode &before = session->locations()->get_state();
 		session->locations()->add (location, true);
Index: gtk2_ardour/editor_markers.cc
===================================================================
--- gtk2_ardour/editor_markers.cc	(revision 2858)
+++ gtk2_ardour/editor_markers.cc	(working copy)
@@ -395,6 +395,9 @@
 	
 	if (session) {
 		session->locations()->next_available_name(markername,"mark");
+		if (!name_new_marker(markername)) {
+		    	return;
+		}		
 		Location *location = new Location (where, where, markername, (Location::Flags) flags);
 		session->begin_reversible_command (_("add marker"));
                 XMLNode &before = session->locations()->get_state();
Index: gtk2_ardour/ardour_ui.h
===================================================================
--- gtk2_ardour/ardour_ui.h	(revision 2858)
+++ gtk2_ardour/ardour_ui.h	(working copy)
@@ -712,6 +712,7 @@
 	void toggle_only_copy_imported_files ();
 	void toggle_ShowTrackMeters ();
 	void toggle_use_narrow_ms();
+	void toggle_NameNewMarkers ();
 
 	void mtc_port_changed ();
 	void map_solo_model ();
Index: gtk2_ardour/ardour.menus
===================================================================
--- gtk2_ardour/ardour.menus	(revision 2858)
+++ gtk2_ardour/ardour.menus	(working copy)
@@ -424,6 +424,7 @@
     	       <menuitem action='ShowTrackMeters'/>
 			<menuitem action='DefaultNarrowMS'/>
                <menuitem action='link-region-and-track-selection'/>
+		<menuitem action='NameNewMarkers'/>
 			
 	       <separator/>
          </menu>
Index: gtk2_ardour/ardour_ui_ed.cc
===================================================================
--- gtk2_ardour/ardour_ui_ed.cc	(revision 2858)
+++ gtk2_ardour/ardour_ui_ed.cc	(working copy)
@@ -426,6 +426,7 @@
 	ActionManager::register_toggle_action (option_actions, X_("ShowTrackMeters"), _("Enable Editor Meters"), mem_fun (*this, &ARDOUR_UI::toggle_ShowTrackMeters));
 	ActionManager::register_toggle_action (option_actions, X_("OnlyCopyImportedFiles"), _("Always copy imported files"), mem_fun (*this, &ARDOUR_UI::toggle_only_copy_imported_files));	
 	ActionManager::register_toggle_action (option_actions, X_("DefaultNarrowMS"), _("Use narrow mixer strips"), mem_fun (*this, &ARDOUR_UI::toggle_use_narrow_ms));
+	ActionManager::register_toggle_action (option_actions, X_("NameNewMarkers"), _("Name New Markers"), mem_fun (*this, &ARDOUR_UI::toggle_NameNewMarkers));
 
 	RadioAction::Group denormal_group;
 
Index: gtk2_ardour/ardour_ui_options.cc
===================================================================
--- gtk2_ardour/ardour_ui_options.cc	(revision 2858)
+++ gtk2_ardour/ardour_ui_options.cc	(working copy)
@@ -513,6 +513,7 @@
 	ActionManager::toggle_config_state ("options", "ShowTrackMeters", &Configuration::set_show_track_meters, &Configuration::get_show_track_meters);
 }
 
+
 void
 ARDOUR_UI::toggle_use_narrow_ms()
 {
@@ -520,6 +521,12 @@
 }
 
 void
+ARDOUR_UI::toggle_NameNewMarkers()
+{
+	ActionManager::toggle_config_state ("options", "NameNewMarkers", &Configuration::set_name_new_markers, &Configuration::get_name_new_markers);
+}
+
+void
 ARDOUR_UI::mtc_port_changed ()
 {
 	bool have_mtc;
Index: gtk2_ardour/location_ui.h
===================================================================
--- gtk2_ardour/location_ui.h	(revision 2858)
+++ gtk2_ardour/location_ui.h	(working copy)
@@ -50,6 +50,7 @@
 	void set_session (ARDOUR::Session *);
 
 	void set_number (int);
+	void focus_name();
 	
 	sigc::signal<void,ARDOUR::Location*> remove_requested;  
 	sigc::signal<void> redraw_ranges;  
@@ -149,6 +150,7 @@
 
   private:
 	ARDOUR::LocationStack* locations;
+	ARDOUR::Location *newest_location;
         
 	void session_gone();
 
Index: gtk2_ardour/editor.h
===================================================================
--- gtk2_ardour/editor.h	(revision 2858)
+++ gtk2_ardour/editor.h	(working copy)
@@ -450,6 +450,7 @@
 	void hide_marker (ArdourCanvas::Item*, GdkEvent*);
 	void clear_marker_display ();
 	void mouse_add_new_marker (nframes_t where, bool is_cd=false);
+	bool name_new_marker(string &name);
 	void update_cd_marker_display ();
 	void ensure_cd_marker_updated (LocationMarkers * lam, ARDOUR::Location * location);
 
Index: libs/ardour/ardour/configuration_vars.h
===================================================================
--- libs/ardour/ardour/configuration_vars.h	(revision 2858)
+++ libs/ardour/ardour/configuration_vars.h	(working copy)
@@ -152,6 +152,7 @@
 CONFIG_VARIABLE (std::string, keyboard_layout, "keyboard-layout", "ansi")
 CONFIG_VARIABLE (std::string, default_bindings, "default-bindings", "ardour")
 CONFIG_VARIABLE (bool, default_narrow_ms, "default-narrow_ms", false)
+CONFIG_VARIABLE (bool, name_new_markers, "name-new-markers", true)
 
 /* denormal management */
 

