diff options
author | Sampo Savolainen <v2@iki.fi> | 2008-11-04 20:55:24 +0000 |
---|---|---|
committer | Sampo Savolainen <v2@iki.fi> | 2008-11-04 20:55:24 +0000 |
commit | 200d7baff72b377ab2fd7c4c838c87d839b108e2 (patch) | |
tree | f789c11c6728cc309194e5a4a24bfe4fbe50b7b1 | |
parent | 596aa3a4feb47b6c7247a117b3302cdd73583a26 (diff) |
Skip non active and hidden tracks with prev/next track. Also prevent ensuring the visibility of a hidden track.
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@4095 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 64 |
1 files changed, 36 insertions, 28 deletions
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 6c99f03bdd..b4cb4c688c 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -5147,23 +5147,26 @@ Editor::select_next_route() TimeAxisView* current = selection->tracks.front(); - TimeAxisView* selected; - - for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { - if (*i == current) { - ++i; - if (i != track_views.end()) { - selected = (*i); - selection->set (*i); - } else { - selected = (*(track_views.begin())); - selection->set (*(track_views.begin())); + RouteUI *rui; + do { + for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { + if (*i == current) { + ++i; + if (i != track_views.end()) { + current = (*i); + } else { + current = (*(track_views.begin())); + //selection->set (*(track_views.begin())); + } + break; } - break; } - } + rui = dynamic_cast<RouteUI *>(current); + } while ( current->hidden() || (rui != NULL && !rui->route()->active())); + + selection->set(current); - ensure_track_visible(selected); + ensure_track_visible(current); } void @@ -5176,28 +5179,33 @@ Editor::select_prev_route() TimeAxisView* current = selection->tracks.front(); - TimeAxisView* selected; - - for (TrackViewList::reverse_iterator i = track_views.rbegin(); i != track_views.rend(); ++i) { - if (*i == current) { - ++i; - if (i != track_views.rend()) { - selected = (*i); - selection->set (*i); - } else { - selected = *(track_views.rbegin()); - selection->set (*(track_views.rbegin())); + RouteUI *rui; + do { + for (TrackViewList::reverse_iterator i = track_views.rbegin(); i != track_views.rend(); ++i) { + if (*i == current) { + ++i; + if (i != track_views.rend()) { + current = (*i); + } else { + current = *(track_views.rbegin()); + } + break; } - break; } - } + rui = dynamic_cast<RouteUI *>(current); + } while ( current->hidden() || (rui != NULL && !rui->route()->active())); + + selection->set (current); - ensure_track_visible(selected); + ensure_track_visible(current); } void Editor::ensure_track_visible(TimeAxisView *track) { + if (track->hidden()) + return; + double current_view_min_y = vertical_adjustment.get_value(); double current_view_max_y = vertical_adjustment.get_value() + vertical_adjustment.get_page_size() - canvas_timebars_vsize; |