when tabbing between track/bus name fields, skip rec-enabled tracks to avoid an annoying halt to the motion

git-svn-id: svn://localhost/ardour2/branches/3.0@9925 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2011-07-25 21:00:19 +00:00
parent af7ba3347c
commit 75fc3a82f8
1 changed files with 31 additions and 5 deletions

View File

@ -563,13 +563,25 @@ TimeAxisView::name_entry_key_release (GdkEventKey* ev)
name_entry_changed ();
TrackViewList const & allviews = _editor.get_track_views ();
TrackViewList::const_iterator i = find (allviews.begin(), allviews.end(), this);
if (ev->keyval == GDK_Tab) {
if (i != allviews.end()) {
do {
if (++i == allviews.end()) {
return true;
}
} while((*i)->hidden());
RouteTimeAxisView* rtav = dynamic_cast<RouteTimeAxisView*>(*i);
if (rtav && rtav->route()->record_enabled()) {
continue;
}
if (!(*i)->hidden()) {
break;
}
} while (true);
}
} else {
if (i != allviews.begin()) {
@ -577,13 +589,27 @@ TimeAxisView::name_entry_key_release (GdkEventKey* ev)
if (i == allviews.begin()) {
return true;
}
--i;
} while ((*i)->hidden());
RouteTimeAxisView* rtav = dynamic_cast<RouteTimeAxisView*>(*i);
if (rtav && rtav->route()->record_enabled()) {
continue;
}
if (!(*i)->hidden()) {
break;
}
} while (true);
}
}
(*i)->name_entry.grab_focus();
_editor.ensure_time_axis_view_is_visible (**i);
if ((i != allviews.end()) && (*i != this) && !(*i)->hidden()) {
(*i)->name_entry.grab_focus();
_editor.ensure_time_axis_view_is_visible (**i);
}
}
return true;