restore correct functioning of fit-tracks, which was mistakenly removed because of a failure to understand its complexities

This commit is contained in:
Paul Davis 2014-07-11 06:18:40 -04:00
parent a46ff2bc31
commit f6fd3d18b9

View file

@ -6855,9 +6855,9 @@ Editor::fit_tracks (TrackViewList & tracks)
} }
} }
/* operate on all tracks, hide unselected ones that are in the middle of selected ones */ bool prev_was_selected = false;
bool is_selected = tracks.contains (all.front());
bool within_selected = false; bool next_is_selected;
for (TrackViewList::iterator t = all.begin(); t != all.end(); ++t) { for (TrackViewList::iterator t = all.begin(); t != all.end(); ++t) {
@ -6865,16 +6865,26 @@ Editor::fit_tracks (TrackViewList & tracks)
next = t; next = t;
++next; ++next;
if (next != all.end()) {
next_is_selected = tracks.contains (*next);
} else {
next_is_selected = false;
}
if ((*t)->marked_for_display ()) { if ((*t)->marked_for_display ()) {
if (tracks.contains (*t)) { if (is_selected) {
(*t)->set_height (h); (*t)->set_height (h);
first_y_pos = std::min ((*t)->y_position (), first_y_pos); first_y_pos = std::min ((*t)->y_position (), first_y_pos);
within_selected = true; } else {
} else if (within_selected) { if (prev_was_selected && next_is_selected) {
hide_track_in_display (*t); hide_track_in_display (*t);
}
} }
} }
prev_was_selected = is_selected;
is_selected = next_is_selected;
} }
/* /*