RouteGroupMenu::RouteGroupMenu (Session* s, RouteGroup::Property p)
: SessionHandlePtr (s)
, _default_properties (p)
+ , _inhibit_group_selected (false)
+ , _selected_route_group (0)
{
rebuild (0);
}
{
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)));
if (_session) {
_session->foreach_route_group (sigc::bind (sigc::mem_fun (*this, &RouteGroupMenu::add_item), curr, &group));
}
+
+ _inhibit_group_selected = false;
}
void
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
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__ */