diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc
index 4ad476b..65fb6e7 100644
--- a/gtk2_ardour/time_axis_view.cc
+++ b/gtk2_ardour/time_axis_view.cc
@@ -112,6 +112,7 @@ TimeAxisView::TimeAxisView (ARDOUR::Session* sess, PublicEditor& ed, TimeAxisVie
 	, _preresize_cursor (0)
 	, _have_preresize_cursor (false)
 	, _ebox_release_can_act (true)
+	, by_popup_menu (false)
 {
 	if (!controls_meters_size_group) {
 		controls_meters_size_group = SizeGroup::create (SIZE_GROUP_HORIZONTAL);
@@ -652,11 +653,21 @@ TimeAxisView::name_entry_key_release (GdkEventKey* ev)
 bool
 TimeAxisView::name_entry_focus_out (GdkEventFocus*)
 {
+	if (by_popup_menu) {
+		by_popup_menu = false;
+		return false;
+	}
 	end_name_edit (RESPONSE_OK);
 	return false;
 }
 
 void
+TimeAxisView::name_entry_populate_popup (Gtk::Menu *)
+{
+	by_popup_menu = true;
+}
+
+void
 TimeAxisView::begin_name_edit ()
 {
 	if (name_entry) {
@@ -675,6 +686,7 @@ TimeAxisView::begin_name_edit ()
 		name_entry->signal_focus_out_event().connect (sigc::mem_fun (*this, &TimeAxisView::name_entry_focus_out));
 		name_entry->set_text (name_label.get_text());
 		name_entry->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &TimeAxisView::end_name_edit), RESPONSE_OK));
+		name_entry->signal_populate_popup().connect (sigc::mem_fun (*this, &TimeAxisView::name_entry_populate_popup));
 
 		if (name_label.is_ancestor (name_hbox)) {
 			name_hbox.remove (name_label);
diff --git a/gtk2_ardour/time_axis_view.h b/gtk2_ardour/time_axis_view.h
index 1eb1935..4be2380 100644
--- a/gtk2_ardour/time_axis_view.h
+++ b/gtk2_ardour/time_axis_view.h
@@ -257,9 +257,11 @@ class TimeAxisView : public virtual AxisView
 	bool name_entry_key_release (GdkEventKey *ev);
 	bool name_entry_key_press (GdkEventKey *ev);
 	bool name_entry_focus_out (GdkEventFocus *ev);
+	void name_entry_populate_popup (Gtk::Menu *);
 
 	Gtk::Entry* name_entry;
 	bool ending_name_edit;
+	bool by_popup_menu;
 	void begin_name_edit ();
 	void end_name_edit (int);
 
