assert() to help find some possible causes of #2991. Fix some confusion with GTK signal emission from RadioMenuElems as applied to route group selection.
git-svn-id: svn://localhost/ardour2/branches/3.0@6482 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
@@ -31,6 +31,8 @@ using namespace ARDOUR;
|
||||
RouteGroupMenu::RouteGroupMenu (Session* s, RouteGroup::Property p)
|
||||
: SessionHandlePtr (s)
|
||||
, _default_properties (p)
|
||||
, _inhibit_group_selected (false)
|
||||
, _selected_route_group (0)
|
||||
{
|
||||
rebuild (0);
|
||||
}
|
||||
@@ -40,6 +42,10 @@ RouteGroupMenu::rebuild (RouteGroup* curr)
|
||||
{
|
||||
using namespace Menu_Helpers;
|
||||
|
||||
_selected_route_group = curr;
|
||||
|
||||
_inhibit_group_selected = true;
|
||||
|
||||
items().clear ();
|
||||
|
||||
items().push_back (MenuElem (_("New group..."), sigc::mem_fun (*this, &RouteGroupMenu::new_group)));
|
||||
@@ -55,6 +61,8 @@ RouteGroupMenu::rebuild (RouteGroup* curr)
|
||||
if (_session) {
|
||||
_session->foreach_route_group (sigc::bind (sigc::mem_fun (*this, &RouteGroupMenu::add_item), curr, &group));
|
||||
}
|
||||
|
||||
_inhibit_group_selected = false;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -72,7 +80,18 @@ RouteGroupMenu::add_item (RouteGroup* rg, RouteGroup* curr, RadioMenuItem::Group
|
||||
void
|
||||
RouteGroupMenu::set_group (RouteGroup* g)
|
||||
{
|
||||
GroupSelected (g);
|
||||
if (g == _selected_route_group) {
|
||||
/* cut off the signal_toggled that GTK emits for an option that is being un-selected
|
||||
when a new option is being selected instead
|
||||
*/
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_inhibit_group_selected) {
|
||||
GroupSelected (g);
|
||||
}
|
||||
|
||||
_selected_route_group = g;
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -39,6 +39,8 @@ public:
|
||||
void set_group (ARDOUR::RouteGroup *);
|
||||
|
||||
ARDOUR::RouteGroup::Property _default_properties;
|
||||
bool _inhibit_group_selected;
|
||||
ARDOUR::RouteGroup* _selected_route_group;
|
||||
};
|
||||
|
||||
#endif /* __ardour_gtk_route_group_menu_h__ */
|
||||
|
||||
@@ -71,6 +71,8 @@ RouteGroup::set_name (string str)
|
||||
int
|
||||
RouteGroup::add (boost::shared_ptr<Route> r)
|
||||
{
|
||||
assert (find (routes->begin(), routes->end(), r) == routes->end ());
|
||||
|
||||
r->leave_route_group ();
|
||||
|
||||
routes->push_back (r);
|
||||
|
||||
Reference in New Issue
Block a user