From 9c6a821c67139a32b531501e0fd000ec19c89faf Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 27 May 2015 19:34:04 -0400 Subject: [PATCH] prevent crash when using WM close button on "new route name contains bad chars" dialog. The dialog would be created twice, once because the user hit enter etc. to indicate they were done editing, and once because focus left the name text entry, also indicate the end of editing. We now note that we're already processing the end of a name edit, and do nothing in that case --- gtk2_ardour/time_axis_view.cc | 11 +++++++++++ gtk2_ardour/time_axis_view.h | 1 + 2 files changed, 12 insertions(+) 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 #include @@ -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 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);