ardour-button-ize zoom buttons; move MIDI panic button to transport bar
[ardour.git] / gtk2_ardour / cairo_widget.cc
index 4e68e95aeefcd3c0688019d775bae8b6a1b4426d..5f83cb80d5023275942a3311a7e4c2d5d90af101 100644 (file)
@@ -23,8 +23,8 @@
 CairoWidget::CairoWidget ()
        : _width (1)
        , _height (1)
-       , _active_state (CairoWidget::ActiveState (0))
-       , _visual_state (CairoWidget::VisualState (0))
+       , _active_state (Gtkmm2ext::ActiveState (0))
+       , _visual_state (Gtkmm2ext::VisualState (0))
 {
 
 }
@@ -52,7 +52,7 @@ CairoWidget::on_expose_event (GdkEventExpose *ev)
 void
 CairoWidget::set_dirty ()
 {
-       ENSURE_GUI_THREAD (*this, &CairoWidget::set_dirty)
+       ENSURE_GUI_THREAD (*this, &CairoWidget::set_dirty);
        queue_draw ();
 }
 
@@ -89,7 +89,7 @@ CairoWidget::get_parent_bg ()
 }
 
 void
-CairoWidget::set_active_state (CairoWidget::ActiveState s)
+CairoWidget::set_active_state (Gtkmm2ext::ActiveState s)
 {
        if (_active_state != s) {
                _active_state = s;
@@ -98,10 +98,26 @@ CairoWidget::set_active_state (CairoWidget::ActiveState s)
 }
 
 void
-CairoWidget::set_visual_state (CairoWidget::VisualState s)
+CairoWidget::set_visual_state (Gtkmm2ext::VisualState s)
 {
        if (_visual_state != s) {
                _visual_state = s;
                StateChanged ();
        }
 }
+
+void
+CairoWidget::on_state_changed (Gtk::StateType)
+{
+       /* this will catch GTK-level state changes from calls like
+          ::set_sensitive() 
+       */
+
+       if (get_state() == Gtk::STATE_INSENSITIVE) {
+               set_visual_state (Gtkmm2ext::VisualState (visual_state() | Gtkmm2ext::Insensitive));
+       } else {
+               set_visual_state (Gtkmm2ext::VisualState (visual_state() & ~Gtkmm2ext::Insensitive));
+       }
+
+       queue_draw ();
+}