summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/route_group_menu.cc11
-rw-r--r--gtk2_ardour/route_group_menu.h2
2 files changed, 8 insertions, 5 deletions
diff --git a/gtk2_ardour/route_group_menu.cc b/gtk2_ardour/route_group_menu.cc
index 5ccafaec39..63577392a7 100644
--- a/gtk2_ardour/route_group_menu.cc
+++ b/gtk2_ardour/route_group_menu.cc
@@ -88,7 +88,7 @@ RouteGroupMenu::build (WeakRouteList const & s)
RadioMenuItem::Group group;
items.push_back (RadioMenuElem (group, _("No Group")));
RadioMenuItem* i = static_cast<RadioMenuItem *> (&items.back ());
- i->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &RouteGroupMenu::set_group), (RouteGroup *) 0));
+ i->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &RouteGroupMenu::set_group), i, (RouteGroup *) 0));
if (groups.size() == 1 && *groups.begin() == 0) {
i->set_active ();
@@ -116,7 +116,7 @@ RouteGroupMenu::add_item (RouteGroup* rg, std::set<RouteGroup*> const & groups,
items.push_back (RadioMenuElem (*group, rg->name()));
RadioMenuItem* i = static_cast<RadioMenuItem*> (&items.back ());
- i->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &RouteGroupMenu::set_group), rg));
+ i->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &RouteGroupMenu::set_group), i, rg));
if (groups.size() == 1 && *groups.begin() == rg) {
/* there's only one active group, and it's this one */
@@ -131,11 +131,14 @@ RouteGroupMenu::add_item (RouteGroup* rg, std::set<RouteGroup*> const & groups,
* @param Group, or 0 for none.
*/
void
-RouteGroupMenu::set_group (RouteGroup* g)
+RouteGroupMenu::set_group (Gtk::RadioMenuItem* e, RouteGroup* g)
{
if (_inhibit_group_selected) {
return;
}
+ if (e && !e->get_active()) {
+ return;
+ }
for (WeakRouteList::const_iterator i = _subject.begin(); i != _subject.end(); ++i) {
boost::shared_ptr<Route> r = i->lock ();
@@ -173,7 +176,7 @@ RouteGroupMenu::new_group_dialog_finished (int r, RouteGroupDialog* d)
{
if (r == RESPONSE_OK) {
_session->add_route_group (d->group());
- set_group (d->group());
+ set_group (0, d->group());
} else {
delete d->group ();
}
diff --git a/gtk2_ardour/route_group_menu.h b/gtk2_ardour/route_group_menu.h
index 334a3b504e..b29114a145 100644
--- a/gtk2_ardour/route_group_menu.h
+++ b/gtk2_ardour/route_group_menu.h
@@ -38,7 +38,7 @@ public:
private:
void add_item (ARDOUR::RouteGroup *, std::set<ARDOUR::RouteGroup*> const &, Gtk::RadioMenuItem::Group*);
void new_group ();
- void set_group (ARDOUR::RouteGroup *);
+ void set_group (Gtk::RadioMenuItem*, ARDOUR::RouteGroup *);
void new_group_dialog_finished (int, RouteGroupDialog*);
Gtk::Menu* _menu;