summaryrefslogtreecommitdiff
path: root/gtk2_ardour/time_axis_view.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-01-23 20:33:16 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2013-01-23 20:33:16 +0000
commit80b11d93ee0f1d41e793a0cd652456f8e64d191a (patch)
tree9ef1040d26545ec5493a45d64d3976121e23c94e /gtk2_ardour/time_axis_view.cc
parent3819045fdbffe5af85e24d39827ad9cfd88d96f3 (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.cc40
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 ();
+ }
}
}