From 8bc0ac7529dbecb1efc5a6daa4ec055431234d73 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 11 Jul 2014 06:18:40 -0400 Subject: [PATCH] restore correct functioning of fit-tracks, which was mistakenly removed because of a failure to understand its complexities --- gtk2_ardour/editor_ops.cc | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index eb5b22ee62..f4582704d8 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -6817,9 +6817,9 @@ Editor::fit_tracks (TrackViewList & tracks) } } - /* operate on all tracks, hide unselected ones that are in the middle of selected ones */ - - bool within_selected = false; + bool prev_was_selected = false; + bool is_selected = tracks.contains (all.front()); + bool next_is_selected; for (TrackViewList::iterator t = all.begin(); t != all.end(); ++t) { @@ -6827,16 +6827,26 @@ Editor::fit_tracks (TrackViewList & tracks) next = t; ++next; - + + if (next != all.end()) { + next_is_selected = tracks.contains (*next); + } else { + next_is_selected = false; + } + if ((*t)->marked_for_display ()) { - if (tracks.contains (*t)) { + if (is_selected) { (*t)->set_height (h); first_y_pos = std::min ((*t)->y_position (), first_y_pos); - within_selected = true; - } else if (within_selected) { - hide_track_in_display (*t); + } else { + if (prev_was_selected && next_is_selected) { + hide_track_in_display (*t); + } } } + + prev_was_selected = is_selected; + is_selected = next_is_selected; } /* -- 2.30.2