diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2020-04-03 18:54:37 -0600 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2020-04-03 18:54:51 -0600 |
commit | 0ecf1e40ea9449b4f79b1f7bfb4d6b07b505ae50 (patch) | |
tree | 50155422c1c9cfa88897b5bc01554b5f164254fe /gtk2_ardour/editor_ops.cc | |
parent | c2b026831c5a7229e8ee2b53ba0406223e1fc016 (diff) |
add Editor-level action to toggle track layer display
Diffstat (limited to 'gtk2_ardour/editor_ops.cc')
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 09101347e0..92385e41b7 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -8531,3 +8531,34 @@ Editor::toggle_all_existing_automation () tvl.foreach_stripable_time_axis (boost::bind (&StripableTimeAxisView::hide_all_automation, _1, false)); } } + +void +Editor::toggle_layer_display () +{ + TrackViewList & tvl (selection->tracks.empty() ? track_views : selection->tracks); + bool seen_stacked = false; + bool seen_overlaid = false; + + for (TrackViewList::const_iterator t = tvl.begin(); t != tvl.end(); ++t) { + RouteTimeAxisView* rtav = dynamic_cast<RouteTimeAxisView*> (*t); + + if (!rtav || !rtav->is_track()) { + continue; + } + + if (rtav->layer_display () == Stacked) { + seen_stacked = true; + } else if (rtav->layer_display() == Overlaid) { + seen_overlaid = true; + } + } + + if (seen_stacked && seen_overlaid) { + /* inconsistent current display - go to overlaid */ + tvl.foreach_route_time_axis (boost::bind (&RouteTimeAxisView::set_layer_display, _1, Overlaid)); + + } else { + tvl.foreach_route_time_axis (boost::bind (&RouteTimeAxisView::toggle_layer_display, _1)); + } + +} |