diff --git a/gtk2_ardour/compact_meter_bridge.cc b/gtk2_ardour/compact_meter_bridge.cc index 34c47f2f9b..d14d1c8374 100644 --- a/gtk2_ardour/compact_meter_bridge.cc +++ b/gtk2_ardour/compact_meter_bridge.cc @@ -195,6 +195,7 @@ CompactMeterbridge::add_strips (RouteList& routes) if (i != _strips.end ()) { _compact_meter_strips_home.pack_start (*(*i).second, false, false); (*i).second->set_serial_number (++serial_number); + (*i).second->update_tooltip (); } } } @@ -243,6 +244,7 @@ CompactMeterbridge::sync_order_keys () if (i != _strips.end ()) { _compact_meter_strips_home.pack_start (*(*i).second, false, false); (*i).second->set_serial_number (++serial_number); + (*i).second->update_tooltip (); } } } diff --git a/gtk2_ardour/compact_meter_strip.cc b/gtk2_ardour/compact_meter_strip.cc index f476e902b7..75a153ba0d 100644 --- a/gtk2_ardour/compact_meter_strip.cc +++ b/gtk2_ardour/compact_meter_strip.cc @@ -72,7 +72,12 @@ CompactMeterStrip::CompactMeterStrip (Session* sess, boost::shared_ptrname_changed.connect(_route_connections, + invalidator (*this), + boost::bind (&CompactMeterStrip::update_tooltip, + this), gui_context()); + + update_rec_display (); } } @@ -87,10 +92,20 @@ CompactMeterStrip::self_delete () delete this; } +void +CompactMeterStrip::update_tooltip () +{ + string record_status = _route->record_enabled() ? "Record Enabled" : "Record Disabled"; + stringstream ss; + ss<<_serial_number; + this->set_tooltip_text ("Track " + ss.str() + "\n" + _route->name () + "\n" + record_status); +} + void CompactMeterStrip::update_rec_display () { _record_indicator.set_state ((_route && _route->record_enabled ()) ? Gtk::STATE_ACTIVE : Gtk::STATE_NORMAL); + update_tooltip (); } void diff --git a/gtk2_ardour/compact_meter_strip.h b/gtk2_ardour/compact_meter_strip.h index ae02c9ee8f..47f6f2b23d 100644 --- a/gtk2_ardour/compact_meter_strip.h +++ b/gtk2_ardour/compact_meter_strip.h @@ -35,7 +35,8 @@ class CompactMeterStrip : public Gtk::EventBox, public WavesUI size_t get_serial_number () { return _serial_number; } void set_serial_number ( size_t serial_number ) { _serial_number = serial_number; } - + void update_tooltip (); + void fast_update (); boost::shared_ptr route() { return _route; } static PBD::Signal1 CatchDeletion; diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h index fb2b18f177..9b1fb95df1 100644 --- a/libs/ardour/ardour/route.h +++ b/libs/ardour/ardour/route.h @@ -274,6 +274,7 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou framecnt_t initial_delay() const { return _initial_delay; } framecnt_t signal_latency() const { return _signal_latency; } + PBD::Signal0 name_changed; PBD::Signal0 active_changed; PBD::Signal0 phase_invert_changed; PBD::Signal0 denormal_protection_changed; diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index ab0bf794e9..796d28e1d7 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -3435,6 +3435,9 @@ Route::set_name (const string& str) ret = (_input->set_name(name) && _output->set_name(name)); + //emit signal + name_changed (); + if (ret) { /* rename the main outs. Leave other IO processors * with whatever name they already have, because its @@ -3446,12 +3449,12 @@ Route::set_name (const string& str) if (_main_outs->set_name (name)) { /* XXX returning false here is stupid because we already changed the route name. - */ + */ return false; } } } - + return ret; }