#include "ardour/route_group.h"
#include "route_group_dialog.h"
#include "group_tabs.h"
+#include "keyboard.h"
#include "i18n.h"
using namespace std;
using namespace Gtk;
using namespace ARDOUR;
-GroupTabs::GroupTabs ()
- : _session (0),
+GroupTabs::GroupTabs (Editor* e)
+ : EditorComponent (e),
_dragging (0)
{
}
void
-GroupTabs::set_session (Session* s)
+GroupTabs::connect_to_session (Session* s)
{
- _session = s;
- s->RouteGroupChanged.connect (mem_fun (*this, &GroupTabs::set_dirty));
+ EditorComponent::connect_to_session (s);
+
+ _session_connections.push_back (_session->RouteGroupChanged.connect (mem_fun (*this, &GroupTabs::set_dirty)));
}
} else if (ev->button == 3) {
RouteGroup* g = t ? t->group : 0;
- get_menu(g)->popup (ev->button, ev->time);
+ Menu* m = get_menu (g);
+ if (m) {
+ m->popup (ev->button, ev->time);
+ }
}
}
if (!_drag_moved) {
- /* toggle active state */
- _dragging->group->set_active (!_dragging->group->is_active (), this);
- _dragging = 0;
+
+ if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
+
+ /* edit */
+ RouteGroupDialog d (_dragging->group, Gtk::Stock::APPLY);
+ d.do_run ();
+
+ } else {
+
+ /* toggle active state */
+ _dragging->group->set_active (!_dragging->group->is_active (), this);
+ _dragging = 0;
+
+ }
+
} else {
/* finish drag */
_dragging = 0;