tweak meter-metric red-boxes/stripes
[ardour.git] / gtk2_ardour / meterbridge.cc
index 3042ba1d0e68eda91cec0746a43565fe89ae9a43..f59fbfd6930d64f61d0348c490d19797a13b17e2 100644 (file)
@@ -600,6 +600,7 @@ Meterbridge::sync_order_keys (RouteSortOrderKey src)
 
        int pos = 0;
        int vis = 0;
+       MeterStrip * last = 0;
 
        unsigned int metrics = 0;
        MeterType lmt = MeterPeak;
@@ -651,14 +652,24 @@ Meterbridge::sync_order_keys (RouteSortOrderKey src)
                                vis++;
                }
 
+               (*i).s->set_tick_bar(0);
+
                MeterType nmt = (*i).s->meter_type();
                if (nmt == MeterKrms) nmt = MeterPeak; // identical metrics
+               if (pos == 0) {
+                       (*i).s->set_tick_bar(1);
+               }
 
                if ((*i).visible && nmt != lmt && pos == 0) {
                        lmt = nmt;
                        metrics_left.set_metric_mode(1, lmt);
                } else if ((*i).visible && nmt != lmt) {
 
+                       if (last) {
+                               last->set_tick_bar(last->get_tick_bar() | 2);
+                       }
+                       (*i).s->set_tick_bar((*i).s->get_tick_bar() | 1);
+
                        if (_metrics.size() <= metrics) {
                                _metrics.push_back(new MeterStrip(have_midi ? 2 : 3, lmt));
                                meterarea.pack_start (*_metrics[metrics], false, false);
@@ -690,6 +701,13 @@ Meterbridge::sync_order_keys (RouteSortOrderKey src)
                }
 
                meterarea.reorder_child(*((*i).s), pos++);
+               if ((*i).visible) {
+                       last = (*i).s;
+               }
+       }
+
+       if (last) {
+               last->set_tick_bar(last->get_tick_bar() | 2);
        }
 
        metrics_right.set_metric_mode(have_midi ? 2 : 3, lmt);