Index: gtk2_ardour/editor_ops.cc
===================================================================
--- gtk2_ardour/editor_ops.cc	(revision 2711)
+++ gtk2_ardour/editor_ops.cc	(working copy)
@@ -1474,6 +1474,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 ()
 {
@@ -1509,6 +1548,9 @@
 	nframes_t where = session->audible_frame();
 	
 	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();
@@ -1643,6 +1685,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 2711)
+++ 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,12 +830,16 @@
 		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);
 		XMLNode &after = session->locations()->get_state();
 		session->add_command (new MementoCommand<Locations>(*(session->locations()), &before, &after));
 		session->commit_reversible_command ();
+		
 	}
 	
 }
Index: gtk2_ardour/editor_markers.cc
===================================================================
--- gtk2_ardour/editor_markers.cc	(revision 2711)
+++ gtk2_ardour/editor_markers.cc	(working copy)
@@ -389,6 +389,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 2711)
+++ gtk2_ardour/ardour_ui.h	(working copy)
@@ -711,6 +711,7 @@
 	void toggle_SecondaryClockDeltaEditCursor ();
 	void toggle_only_copy_imported_files ();
 	void toggle_ShowTrackMeters ();
+	void toggle_NameNewMarkers ();
 
 	void mtc_port_changed ();
 	void map_solo_model ();
Index: gtk2_ardour/ardour.menus
===================================================================
--- gtk2_ardour/ardour.menus	(revision 2711)
+++ gtk2_ardour/ardour.menus	(working copy)
@@ -404,6 +404,7 @@
 	       <menuitem action='SecondaryClockDeltaEditCursor'/>
 	       <menuitem action='OnlyCopyImportedFiles'/>
 			<menuitem action='ShowTrackMeters'/>
+		<menuitem action='NameNewMarkers'/>
 	       <separator/>
          </menu>
 	 <menu name='Help' action='Help'>
Index: gtk2_ardour/ardour_ui_ed.cc
===================================================================
--- gtk2_ardour/ardour_ui_ed.cc	(revision 2711)
+++ gtk2_ardour/ardour_ui_ed.cc	(working copy)
@@ -419,6 +419,7 @@
 	ActionManager::register_toggle_action (option_actions, X_("SecondaryClockDeltaEditCursor"), _("Secondary Clock delta to edit point"), mem_fun (*this, &ARDOUR_UI::toggle_SecondaryClockDeltaEditCursor));	
 	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_("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 2711)
+++ gtk2_ardour/ardour_ui_options.cc	(working copy)
@@ -513,6 +513,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 2711)
+++ 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 2711)
+++ gtk2_ardour/editor.h	(working copy)
@@ -430,6 +430,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 2711)
+++ libs/ardour/ardour/configuration_vars.h	(working copy)
@@ -147,6 +147,7 @@
 CONFIG_VARIABLE (float, automation_interval, "automation-interval", 50)
 CONFIG_VARIABLE (bool, sync_all_route_ordering, "sync-all-route-ordering", true)
 CONFIG_VARIABLE (bool, only_copy_imported_files, "only-copy-imported-files", true)
+CONFIG_VARIABLE (bool, name_new_markers, "name-new-markers", true)
 
 /* denormal management */
 
