summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/time_axis_view.cc11
-rw-r--r--gtk2_ardour/time_axis_view.h1
2 files changed, 12 insertions, 0 deletions
diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc
index e3695fb411..9deb7eb3e8 100644
--- a/gtk2_ardour/time_axis_view.cc
+++ b/gtk2_ardour/time_axis_view.cc
@@ -27,6 +27,7 @@
#include "pbd/error.h"
#include "pbd/convert.h"
#include "pbd/stacktrace.h"
+#include "pbd/unwind.h"
#include <gtkmm2ext/doi.h>
#include <gtkmm2ext/utils.h>
@@ -102,6 +103,7 @@ TimeAxisView::TimeAxisView (ARDOUR::Session* sess, PublicEditor& ed, TimeAxisVie
, _y_position (0)
, _editor (ed)
, name_entry (0)
+ , ending_name_edit (false)
, control_parent (0)
, _order (0)
, _effective_height (0)
@@ -696,6 +698,15 @@ TimeAxisView::end_name_edit (int response)
if (!name_entry) {
return;
}
+
+ if (ending_name_edit) {
+ /* already doing this, and focus out or other event has caused
+ us to re-enter this code.
+ */
+ return;
+ }
+
+ PBD::Unwinder<bool> uw (ending_name_edit, true);
bool edit_next = false;
bool edit_prev = false;
diff --git a/gtk2_ardour/time_axis_view.h b/gtk2_ardour/time_axis_view.h
index baeeb2a92a..1eb193590c 100644
--- a/gtk2_ardour/time_axis_view.h
+++ b/gtk2_ardour/time_axis_view.h
@@ -259,6 +259,7 @@ class TimeAxisView : public virtual AxisView
bool name_entry_focus_out (GdkEventFocus *ev);
Gtk::Entry* name_entry;
+ bool ending_name_edit;
void begin_name_edit ();
void end_name_edit (int);