limit width and resize meterbride window
authorRobin Gareus <robin@gareus.org>
Tue, 23 Jul 2013 23:39:16 +0000 (01:39 +0200)
committerRobin Gareus <robin@gareus.org>
Tue, 23 Jul 2013 23:39:16 +0000 (01:39 +0200)
gtk2_ardour/meter_strip.cc
gtk2_ardour/meter_strip.h
gtk2_ardour/meterbridge.cc

index 4e4ffe11cf13c914e88af58a4cdcae354ab2c31a..061c14d4684a20831e4fa54184ea2239661d0392 100644 (file)
@@ -56,6 +56,7 @@ using namespace ArdourMeter;
 
 PBD::Signal1<void,MeterStrip*> MeterStrip::CatchDeletion;
 PBD::Signal0<void> MeterStrip::MetricChanged;
+PBD::Signal0<void> MeterStrip::ConfigurationChanged;
 
 MeterStrip::MeterStrip (int metricmode, MeterType mt)
        : AxisView(0)
@@ -366,8 +367,9 @@ MeterStrip::meter_configuration_changed (ChanCount c)
                _has_midi = true;
        }
 
-       if (old_has_midi != _has_midi) MetricChanged();
        on_theme_changed();
+       if (old_has_midi != _has_midi) MetricChanged();
+       else ConfigurationChanged();
 }
 
 void
index 4c532df5c76555b75054f29dc050b8fc398000e5..fd5f65be3cc48bf53d0e91fb8739767caed94305 100644 (file)
@@ -56,6 +56,7 @@ class MeterStrip : public Gtk::VBox, public RouteUI
 
        static PBD::Signal1<void,MeterStrip*> CatchDeletion;
        static PBD::Signal0<void> MetricChanged;
+       static PBD::Signal0<void> ConfigurationChanged;
 
        void reset_peak_display ();
        void reset_route_peak_display (ARDOUR::Route*);
index 2b51e9a85f77827ed7dd394e97fb06f954460cdf..fe29977b86b0649fcd45654b5dee10bb5133925d 100644 (file)
@@ -141,6 +141,7 @@ Meterbridge::Meterbridge ()
        Route::SyncOrderKeys.connect (*this, invalidator (*this), boost::bind (&Meterbridge::sync_order_keys, this, _1), gui_context());
        MeterStrip::CatchDeletion.connect (*this, invalidator (*this), boost::bind (&Meterbridge::remove_strip, this, _1), gui_context());
        MeterStrip::MetricChanged.connect (*this, invalidator (*this), boost::bind(&Meterbridge::resync_order, this), gui_context());
+       MeterStrip::ConfigurationChanged.connect (*this, invalidator (*this), boost::bind(&Meterbridge::queue_resize, this), gui_context());
 
        /* work around ScrolledWindowViewport alignment mess Part one */
        Gtk::HBox * yspc = manage (new Gtk::HBox());
@@ -336,7 +337,8 @@ Meterbridge::on_size_request (Gtk::Requisition* r)
        Gtk::Window::on_size_request(r);
 
        Gdk::Geometry geom;
-       geom.max_width = meterarea.get_width() + metrics_left.get_width() + metrics_right.get_width();
+       Gtk::Requisition mr = meterarea.size_request();
+       geom.max_width = mr.width + metrics_left.get_width() + metrics_right.get_width();
        geom.max_height = max_height;
 
        if (cur_max_width != geom.max_width) {