diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-01-23 20:33:16 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-01-23 20:33:16 +0000 |
commit | 80b11d93ee0f1d41e793a0cd652456f8e64d191a (patch) | |
tree | 9ef1040d26545ec5493a45d64d3976121e23c94e /gtk2_ardour/time_axis_view.cc | |
parent | 3819045fdbffe5af85e24d39827ad9cfd88d96f3 (diff) |
reinstate shift-tab behaviour (move to prev track/bus) when editing track/bus names (#5298)
git-svn-id: svn://localhost/ardour2/branches/3.0@13982 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/time_axis_view.cc')
-rw-r--r-- | gtk2_ardour/time_axis_view.cc | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc index 7bbf5caa60..8d2276bfb9 100644 --- a/gtk2_ardour/time_axis_view.cc +++ b/gtk2_ardour/time_axis_view.cc @@ -578,6 +578,9 @@ TimeAxisView::name_entry_key_release (GdkEventKey* ev) * ev->state. */ case GDK_ISO_Left_Tab: + end_name_edit (RESPONSE_APPLY); + return true; + case GDK_Tab: end_name_edit (RESPONSE_ACCEPT); return true; @@ -591,7 +594,7 @@ TimeAxisView::name_entry_key_release (GdkEventKey* ev) bool TimeAxisView::name_entry_focus_out (GdkEventFocus*) { - end_name_edit (RESPONSE_ACCEPT); + end_name_edit (RESPONSE_OK); return false; } @@ -635,6 +638,7 @@ TimeAxisView::end_name_edit (int response) } bool edit_next = false; + bool edit_prev = false; switch (response) { case RESPONSE_CANCEL: @@ -645,6 +649,9 @@ TimeAxisView::end_name_edit (int response) case RESPONSE_ACCEPT: name_entry_changed (); edit_next = true; + case RESPONSE_APPLY: + name_entry_changed (); + edit_prev = true; } /* this will delete the name_entry. but it will also drop focus, which @@ -690,6 +697,37 @@ TimeAxisView::end_name_edit (int response) _editor.ensure_time_axis_view_is_visible (**i); (*i)->begin_name_edit (); } + + } else if (edit_prev) { + + TrackViewList const & allviews = _editor.get_track_views (); + TrackViewList::const_iterator i = find (allviews.begin(), allviews.end(), this); + + if (i != allviews.begin()) { + do { + if (i == allviews.begin()) { + return; + } + + --i; + + RouteTimeAxisView* rtav = dynamic_cast<RouteTimeAxisView*>(*i); + + if (rtav && rtav->route()->record_enabled()) { + continue; + } + + if (!(*i)->hidden()) { + break; + } + + } while (true); + } + + if ((i != allviews.end()) && (*i != this) && !(*i)->hidden()) { + _editor.ensure_time_axis_view_is_visible (**i); + (*i)->begin_name_edit (); + } } } |