OSC: add group sharing bit feedback
[ardour.git] / libs / surfaces / push2 / menu.cc
index a31e485e189fed7e767fb4dcf53b7c038d72f395..5a70a0ebd06429c74132e78cb3fd4b0427ff276b 100644 (file)
 #include <cairomm/region.h>
 #include <pangomm/layout.h>
 
+#include "pbd/i18n.h"
+
 #include "canvas/text.h"
+#include "canvas/types.h"
 #include "canvas/rectangle.h"
-#include "canvas/colors.h"
+#include "gtkmm2ext/colors.h"
 
 #include "canvas.h"
 #include "gui.h"
 #include "push2.h"
 
+#include "menu.h"
+
+#ifdef __APPLE__
+#define Rect ArdourCanvas::Rect
+#endif
+
 using namespace ARDOUR;
 using namespace std;
 using namespace PBD;
@@ -36,9 +45,6 @@ using namespace Glib;
 using namespace ArdourSurface;
 using namespace ArdourCanvas;
 
-#include "pbd/i18n.h"
-#include "menu.h"
-
 Push2Menu::Push2Menu (Item* parent, vector<string> s)
        : Container (parent)
        , baseline (-1)
@@ -47,7 +53,7 @@ Push2Menu::Push2Menu (Item* parent, vector<string> s)
        , wrap (true)
        , first (0)
        , last (0)
-       , _active (UINT32_MAX)
+       , _active (0)
 {
        Pango::FontDescription fd ("Sans 10");
 
@@ -61,7 +67,7 @@ Push2Menu::Push2Menu (Item* parent, vector<string> s)
                baseline = h;
        }
 
-       active_bg = new Rectangle (this);
+       active_bg = new ArdourCanvas::Rectangle (this);
 
        for (vector<string>::iterator si = s.begin(); si != s.end(); ++si) {
                Text* t = new Text (this);
@@ -213,7 +219,7 @@ Push2Menu::render (Rect const& area, Cairo::RefPtr<Cairo::Context> context) cons
 void
 Push2Menu::set_active (uint32_t index)
 {
-       if (index == _active) {
+       if (!parent() || (index == _active)) {
                return;
        }
 
@@ -224,7 +230,7 @@ Push2Menu::set_active (uint32_t index)
 
        /* set text color for old active item, and the new one */
 
-       if (_active <= displays.size()) {
+       if (_active < displays.size()) {
                displays[_active]->set_color (text_color);
        }
 
@@ -256,7 +262,7 @@ Push2Menu::set_active (uint32_t index)
 }
 
 void
-Push2Menu::set_text_color (Color c)
+Push2Menu::set_text_color (Gtkmm2ext::Color c)
 {
        text_color = c;
 
@@ -267,10 +273,10 @@ Push2Menu::set_text_color (Color c)
 }
 
 void
-Push2Menu::set_active_color (Color c)
+Push2Menu::set_active_color (Gtkmm2ext::Color c)
 {
        active_color = c;
-       contrast_color = contrasting_text_color (active_color);
+       contrast_color = Gtkmm2ext::contrasting_text_color (active_color);
        if (active_bg) {
                active_bg->set_fill_color (c);
        }