X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fcairo_widget.cc;h=5f83cb80d5023275942a3311a7e4c2d5d90af101;hb=f96ccb195828daeec03646ee4013531fe88c87fa;hp=4e68e95aeefcd3c0688019d775bae8b6a1b4426d;hpb=e82944820716082626675a79f6c710057ce5787f;p=ardour.git diff --git a/gtk2_ardour/cairo_widget.cc b/gtk2_ardour/cairo_widget.cc index 4e68e95aee..5f83cb80d5 100644 --- a/gtk2_ardour/cairo_widget.cc +++ b/gtk2_ardour/cairo_widget.cc @@ -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 (); +}