diff options
author | Robin Gareus <robin@gareus.org> | 2019-02-16 23:36:59 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2019-02-16 23:37:21 +0100 |
commit | 4ee15fa7b3c0584e01f7978f2c7a99e5df3a6ed3 (patch) | |
tree | 3b99248d574fb1691eb18d5fb43fdc903f0db271 | |
parent | 23a98e5f4df2f559de98902663faa96102093748 (diff) |
Tweak meterbridge track reordering -- amend d03574987
-rw-r--r-- | gtk2_ardour/meterbridge.cc | 12 | ||||
-rw-r--r-- | gtk2_ardour/meterbridge.h | 2 |
2 files changed, 8 insertions, 6 deletions
diff --git a/gtk2_ardour/meterbridge.cc b/gtk2_ardour/meterbridge.cc index 5f8ed9fea6..54e716d8a9 100644 --- a/gtk2_ardour/meterbridge.cc +++ b/gtk2_ardour/meterbridge.cc @@ -135,8 +135,9 @@ Meterbridge::Meterbridge () signal_delete_event().connect (sigc::mem_fun (*this, &Meterbridge::hide_window)); signal_configure_event().connect (sigc::mem_fun (*ARDOUR_UI::instance(), &ARDOUR_UI::configure_handler)); 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::MetricChanged.connect (*this, invalidator (*this), boost::bind(&Meterbridge::sync_order_keys, this), gui_context()); MeterStrip::ConfigurationChanged.connect (*this, invalidator (*this), boost::bind(&Meterbridge::queue_resize, this), gui_context()); + PresentationInfo::Change.connect (*this, invalidator (*this), boost::bind (&Meterbridge::resync_order, this, _1), gui_context()); /* work around ScrolledWindowViewport alignment mess Part one */ Gtk::HBox * yspc = manage (new Gtk::HBox()); @@ -440,7 +441,6 @@ Meterbridge::set_session (Session* s) _session->StateSaved.connect (_session_connections, invalidator (*this), boost::bind (&Meterbridge::update_title, this), gui_context()); _session->config.ParameterChanged.connect (*this, invalidator (*this), ui_bind (&Meterbridge::parameter_changed, this, _1), gui_context()); Config->ParameterChanged.connect (*this, invalidator (*this), ui_bind (&Meterbridge::parameter_changed, this, _1), gui_context()); - PresentationInfo::Change.connect (*this, invalidator (*this), boost::bind (&Meterbridge::resync_order, this), gui_context()); if (_visible) { show_window(); @@ -553,7 +553,7 @@ Meterbridge::add_strips (RouteList& routes) strip = new MeterStrip (_session, route); strips.push_back (MeterBridgeStrip(strip)); - route->active_changed.connect (*this, invalidator (*this), boost::bind (&Meterbridge::resync_order, this), gui_context ()); + route->active_changed.connect (*this, invalidator (*this), boost::bind (&Meterbridge::sync_order_keys, this), gui_context ()); meterarea.pack_start (*strip, false, false); strip->show(); @@ -718,9 +718,11 @@ Meterbridge::sync_order_keys () } void -Meterbridge::resync_order() +Meterbridge::resync_order (PropertyChange what_changed) { - sync_order_keys(); + if (what_changed.contains (ARDOUR::Properties::order)) { + sync_order_keys(); + } } void diff --git a/gtk2_ardour/meterbridge.h b/gtk2_ardour/meterbridge.h index b741f6fd74..0ab1093c84 100644 --- a/gtk2_ardour/meterbridge.h +++ b/gtk2_ardour/meterbridge.h @@ -81,7 +81,7 @@ private: void session_going_away (); void sync_order_keys (); - void resync_order (); + void resync_order (PBD::PropertyChange what_changed = ARDOUR::Properties::order); mutable Glib::Threads::Mutex _resync_mutex; struct MeterBridgeStrip { |