: tracks (e)
, editor (e)
, next_time_id (0)
+ , _no_tracks_changed (false)
{
clear ();
if (!regions.empty()) {
regions.clear_all ();
RegionsChanged();
+ if (Config->get_link_region_and_track_selection()) {
+ clear_tracks ();
+ }
}
}
{
if (!tracks.empty()) {
tracks.clear ();
- TracksChanged();
+ if (!_no_tracks_changed) {
+ TracksChanged();
+ }
}
}
tracks.erase (i);
}
- TracksChanged();
+ if (!_no_tracks_changed) {
+ TracksChanged();
+ }
}
void
TrackViewList added = tracks.add (track_list);
if (!added.empty()) {
- TracksChanged ();
+ if (!_no_tracks_changed) {
+ TracksChanged ();
+ }
}
}
list<TimeAxisView*>::iterator i;
if ((i = find (tracks.begin(), tracks.end(), track)) != tracks.end()) {
tracks.erase (i);
- TracksChanged();
+ if (!_no_tracks_changed) {
+ TracksChanged();
+ }
}
}
}
if (changed) {
- TracksChanged();
+ if (!_no_tracks_changed) {
+ TracksChanged();
+ }
}
}
Selection::set (RegionView* r, bool also_clear_tracks)
{
clear_regions ();
- if (also_clear_tracks) {
+ if (also_clear_tracks && !Config->get_link_region_and_track_selection()) {
+ /* clear_regions() will have done this if the link preference
+ * is enabled
+ */
clear_tracks ();
}
add (r);
i = tmp;
}
}
+
+void
+Selection::block_tracks_changed (bool yn)
+{
+ _no_tracks_changed = yn;
+}