diff options
-rw-r--r-- | gtk2_ardour/editor_group_tabs.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/editor_route_groups.cc | 10 | ||||
-rw-r--r-- | gtk2_ardour/editor_route_groups.h | 4 | ||||
-rw-r--r-- | gtk2_ardour/mixer_ui.cc | 10 | ||||
-rw-r--r-- | gtk2_ardour/mixer_ui.h | 3 | ||||
-rw-r--r-- | gtk2_ardour/route_group_dialog.cc | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/route_group.h | 4 | ||||
-rw-r--r-- | libs/ardour/route_group.cc | 32 | ||||
-rw-r--r-- | libs/pbd/stateful.cc | 2 | ||||
-rw-r--r-- | libs/pbd/stateful_diff_command.cc | 11 |
10 files changed, 28 insertions, 52 deletions
diff --git a/gtk2_ardour/editor_group_tabs.cc b/gtk2_ardour/editor_group_tabs.cc index 8e7e303399..04f61aaeef 100644 --- a/gtk2_ardour/editor_group_tabs.cc +++ b/gtk2_ardour/editor_group_tabs.cc @@ -152,7 +152,7 @@ EditorGroupTabs::get_menu (RouteGroup *g) return _editor->_route_groups->menu (g); } -ARDOUR::RouteGroup * +RouteGroup * EditorGroupTabs::new_route_group () const { return _editor->_route_groups->new_route_group (); diff --git a/gtk2_ardour/editor_route_groups.cc b/gtk2_ardour/editor_route_groups.cc index 6c1442356d..1c7304fa60 100644 --- a/gtk2_ardour/editor_route_groups.cc +++ b/gtk2_ardour/editor_route_groups.cc @@ -586,7 +586,7 @@ EditorRouteGroups::add (RouteGroup* group) focus = true; } - group->FlagsChanged.connect (flags_connection, MISSING_INVALIDATOR, ui_bind (&EditorRouteGroups::flags_changed, this, _1, group), gui_context()); + group->PropertyChanged.connect (property_changed_connection, MISSING_INVALIDATOR, ui_bind (&EditorRouteGroups::property_changed, this, group, _1), gui_context()); if (focus) { TreeViewColumn* col = _display.get_column (0); @@ -622,10 +622,8 @@ EditorRouteGroups::groups_changed () } void -EditorRouteGroups::flags_changed (void*, RouteGroup* group) +EditorRouteGroups::property_changed (RouteGroup* group, const PropertyChange& change) { - ENSURE_GUI_THREAD (*this, &EditorRouteGroups::flags_changed, src, group) - _in_row_change = true; Gtk::TreeModel::Children children = _model->children(); @@ -645,7 +643,9 @@ EditorRouteGroups::flags_changed (void*, RouteGroup* group) _in_row_change = false; - _editor->_group_tabs->set_dirty (); + if (change.contains (Properties::name) || change.contains (Properties::active)) { + _editor->_group_tabs->set_dirty (); + } } void diff --git a/gtk2_ardour/editor_route_groups.h b/gtk2_ardour/editor_route_groups.h index cb0162d142..bbc238e3af 100644 --- a/gtk2_ardour/editor_route_groups.h +++ b/gtk2_ardour/editor_route_groups.h @@ -81,7 +81,7 @@ private: void add (ARDOUR::RouteGroup* group); void remove_route_group (); void groups_changed (); - void flags_changed (void*, ARDOUR::RouteGroup*); + void property_changed (ARDOUR::RouteGroup*, const PBD::PropertyChange &); void set_activation (ARDOUR::RouteGroup *, bool); void remove_selected (); void run_new_group_dialog (const ARDOUR::RouteList&); @@ -93,7 +93,7 @@ private: Gtk::ScrolledWindow _scroller; Gtk::VBox* _display_packer; bool _in_row_change; - PBD::ScopedConnection flags_connection; + PBD::ScopedConnection property_changed_connection; }; diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index 618d1bbe36..c1dc4aff9f 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -1204,14 +1204,12 @@ Mixer_UI::remove_selected_route_group () } void -Mixer_UI::group_flags_changed (void* src, RouteGroup* group) +Mixer_UI::route_group_property_changed (RouteGroup* group, const PropertyChange& change) { if (in_group_row_change) { return; } - ENSURE_GUI_THREAD (*this, &Mixer_UI::group_flags_changed, src, group) - /* force an update of any mixer strips that are using this group, otherwise mix group names don't change in mixer strips */ @@ -1238,7 +1236,9 @@ Mixer_UI::group_flags_changed (void* src, RouteGroup* group) in_group_row_change = false; - _group_tabs->set_dirty (); + if (change.contains (Properties::name)) { + _group_tabs->set_dirty (); + } } void @@ -1312,7 +1312,7 @@ Mixer_UI::add_route_group (RouteGroup* group) focus = true; } - group->FlagsChanged.connect (*this, invalidator (*this), ui_bind (&Mixer_UI::group_flags_changed, this, _1, group), gui_context()); + group->PropertyChanged.connect (*this, invalidator (*this), ui_bind (&Mixer_UI::route_group_property_changed, this, group, _1), gui_context()); if (focus) { TreeViewColumn* col = group_display.get_column (0); diff --git a/gtk2_ardour/mixer_ui.h b/gtk2_ardour/mixer_ui.h index c8d3bacae0..ba72ba2cba 100644 --- a/gtk2_ardour/mixer_ui.h +++ b/gtk2_ardour/mixer_ui.h @@ -200,8 +200,7 @@ class Mixer_UI : public Gtk::Window, public PBD::ScopedConnectionList, public AR PluginSelector *_plugin_selector; void strip_property_changed (const PBD::PropertyChange&, MixerStrip *); - - void group_flags_changed (void *src, ARDOUR::RouteGroup *); + void route_group_property_changed (ARDOUR::RouteGroup *, const PBD::PropertyChange &); /* various treeviews */ diff --git a/gtk2_ardour/route_group_dialog.cc b/gtk2_ardour/route_group_dialog.cc index 7b802ac6ec..8dd204ea93 100644 --- a/gtk2_ardour/route_group_dialog.cc +++ b/gtk2_ardour/route_group_dialog.cc @@ -141,7 +141,7 @@ RouteGroupDialog::do_run () plist.add (Properties::relative, _relative.get_active()); plist.add (Properties::active, _active.get_active()); plist.add (Properties::name, string (_name.get_text())); - + _group->set_properties (plist); } diff --git a/libs/ardour/ardour/route_group.h b/libs/ardour/ardour/route_group.h index 7f3d25454a..c7616a746e 100644 --- a/libs/ardour/ardour/route_group.h +++ b/libs/ardour/ardour/route_group.h @@ -128,8 +128,8 @@ class RouteGroup : public SessionObject boost::shared_ptr<RouteList> route_list() { return routes; } - PBD::Signal0<void> changed; - PBD::Signal1<void,void*> FlagsChanged; + /** Emitted when a route has been added to or removed from this group */ + PBD::Signal0<void> MembershipChanged; XMLNode& get_state (); diff --git a/libs/ardour/route_group.cc b/libs/ardour/route_group.cc index 3e9ffe16d6..f0a9125770 100644 --- a/libs/ardour/route_group.cc +++ b/libs/ardour/route_group.cc @@ -92,7 +92,7 @@ RouteGroup::RouteGroup (Session& s, const string &n) , routes (new RouteList) , ROUTE_GROUP_DEFAULT_PROPERTIES { - _xml_node_name = X_("RegionGroup"); + _xml_node_name = X_("RouteGroup"); add_property (_relative); add_property (_active); @@ -135,7 +135,7 @@ RouteGroup::add (boost::shared_ptr<Route> r) r->DropReferences.connect_same_thread (*this, boost::bind (&RouteGroup::remove_when_going_away, this, boost::weak_ptr<Route> (r))); _session.set_dirty (); - changed (); /* EMIT SIGNAL */ + MembershipChanged (); /* EMIT SIGNAL */ return 0; } @@ -158,7 +158,7 @@ RouteGroup::remove (boost::shared_ptr<Route> r) r->leave_route_group (); routes->erase (i); _session.set_dirty (); - changed (); /* EMIT SIGNAL */ + MembershipChanged (); /* EMIT SIGNAL */ return 0; } @@ -339,7 +339,6 @@ RouteGroup::set_active (bool yn, void *src) } _active = yn; _session.set_dirty (); - FlagsChanged (src); /* EMIT SIGNAL */ } void @@ -351,7 +350,6 @@ RouteGroup::set_relative (bool yn, void *src) } _relative = yn; _session.set_dirty (); - FlagsChanged (src); /* EMIT SIGNAL */ } void @@ -372,7 +370,6 @@ RouteGroup::set_hidden (bool yn, void *src) } } _session.set_dirty (); - FlagsChanged (src); /* EMIT SIGNAL */ } void @@ -442,25 +439,10 @@ RouteGroup::destroy_subgroup () bool RouteGroup::enabled_property (PBD::PropertyID prop) { - if (Properties::relative.property_id == prop) { - return is_relative(); - } else if (Properties::active.property_id == prop) { - return is_active(); - } else if (Properties::hidden.property_id == prop) { - return is_hidden(); - } else if (Properties::gain.property_id == prop) { - return is_gain(); - } else if (Properties::mute.property_id == prop) { - return is_mute(); - } else if (Properties::solo.property_id == prop) { - return is_solo(); - } else if (Properties::recenable.property_id == prop) { - return is_recenable(); - } else if (Properties::select.property_id == prop) { - return is_select(); - } else if (Properties::edit.property_id == prop) { - return is_edit(); + OwnedPropertyList::iterator i = _properties->find (prop); + if (i == _properties->end()) { + return false; } - return false; + return dynamic_cast<const PropertyTemplate<bool>* > (i->second)->val (); } diff --git a/libs/pbd/stateful.cc b/libs/pbd/stateful.cc index 79936c691f..b486319c4c 100644 --- a/libs/pbd/stateful.cc +++ b/libs/pbd/stateful.cc @@ -220,6 +220,8 @@ Stateful::set_properties (const PropertyList& property_list) post_set (); + send_change (c); + return c; } diff --git a/libs/pbd/stateful_diff_command.cc b/libs/pbd/stateful_diff_command.cc index 0468ac3e8a..635fe4829a 100644 --- a/libs/pbd/stateful_diff_command.cc +++ b/libs/pbd/stateful_diff_command.cc @@ -71,10 +71,7 @@ StatefulDiffCommand::operator() () boost::shared_ptr<Stateful> s (_object.lock()); if (s) { - PropertyChange changed = s->set_properties (*_redo); - if (!changed.empty()) { - s->PropertyChanged (changed); - } + s->set_properties (*_redo); } } @@ -85,11 +82,7 @@ StatefulDiffCommand::undo () if (s) { std::cerr << "Undoing a stateful diff command\n"; - PropertyChange changed = s->set_properties (*_undo); - if (!changed.empty()) { - std::cerr << "Sending changed\n"; - s->PropertyChanged (changed); - } + s->set_properties (*_undo); } } |