missing initialization
[ardour.git] / gtk2_ardour / group_tabs.cc
index 5dbeeffd095ad224d8e6bca7f026cf3fc6d51662..b8d30dc989809eced10d35f5750c40304c040c58 100644 (file)
@@ -42,7 +42,7 @@ GroupTabs::GroupTabs ()
        , _dragging (0)
        , _dragging_new_tab (0)
 {
-
+       add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::POINTER_MOTION_MASK);
 }
 
 GroupTabs::~GroupTabs ()
@@ -175,6 +175,8 @@ GroupTabs::on_motion_notify_event (GdkEventMotion* ev)
        set_dirty ();
        queue_draw ();
 
+       gdk_event_request_motions(ev);
+
        return true;
 }
 
@@ -319,7 +321,11 @@ GroupTabs::get_menu (RouteGroup* g)
                items.push_back (MenuElem (_("Collect Group"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::collect), g)));
                items.push_back (MenuElem (_("Remove Group"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::remove_group), g)));
                items.push_back (SeparatorElem());
-               items.push_back (MenuElem (_("Add New Subgroup Bus"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::subgroup), g, false, PreFader)));
+               if (g->has_subgroup()) {
+                       items.push_back (MenuElem (_("Remove Subgroup Bus"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::un_subgroup), g)));
+               } else {
+                       items.push_back (MenuElem (_("Add New Subgroup Bus"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::subgroup), g, false, PreFader)));
+               }
                items.push_back (MenuElem (_("Add New Aux Bus (pre-fader)"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::subgroup), g, true, PreFader)));
                items.push_back (MenuElem (_("Add New Aux Bus (post-fader)"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::subgroup), g, true, PostFader)));
        }
@@ -434,25 +440,30 @@ GroupTabs::subgroup (RouteGroup* g, bool aux, Placement placement)
        g->make_subgroup (aux, placement);
 }
 
+void
+GroupTabs::un_subgroup (RouteGroup* g)
+{
+       g->destroy_subgroup ();
+}
+
 struct CollectSorter {
-       CollectSorter (string const & key) : _key (key) {}
+       CollectSorter (RouteSortOrderKey key) : _key (key) {}
 
        bool operator () (boost::shared_ptr<Route> a, boost::shared_ptr<Route> b) {
                return a->order_key (_key) < b->order_key (_key);
        }
 
-       string _key;
+        RouteSortOrderKey _key;
 };
 
 struct OrderSorter {
-       OrderSorter (string const & key) : _key (key) {}
+       OrderSorter (RouteSortOrderKey key) : _key (key) {}
        
        bool operator() (boost::shared_ptr<Route> a, boost::shared_ptr<Route> b) {
-               /* use of ">" forces the correct sort order */
                return a->order_key (_key) < b->order_key (_key);
        }
 
-       string _key;
+       RouteSortOrderKey _key;
 };
 
 /** Collect all members of a RouteGroup so that they are together in the Editor or Mixer.
@@ -545,7 +556,7 @@ GroupTabs::set_group_color (RouteGroup* group, Gdk::Color color)
 
        char buf[64];
        snprintf (buf, sizeof (buf), "%d:%d:%d", color.get_red(), color.get_green(), color.get_blue());
-       gui_state.set (group_gui_id (group), "color", buf);
+       gui_state.set_property (group_gui_id (group), "color", buf);
        
        /* the group color change notification */