summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_ops.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2020-04-03 18:54:37 -0600
committerPaul Davis <paul@linuxaudiosystems.com>2020-04-03 18:54:51 -0600
commit0ecf1e40ea9449b4f79b1f7bfb4d6b07b505ae50 (patch)
tree50155422c1c9cfa88897b5bc01554b5f164254fe /gtk2_ardour/editor_ops.cc
parentc2b026831c5a7229e8ee2b53ba0406223e1fc016 (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.cc31
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));
+ }
+
+}