From d555253ffff917358747d1aced3e7fa0509479e2 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 3 Nov 2011 14:50:42 +0000 Subject: [PATCH] make CairoWidget respond to gtk_widget_set_state (INSENSITIVE) git-svn-id: svn://localhost/ardour2/branches/3.0@10413 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/cairo_widget.cc | 16 ++++++++++++++++ gtk2_ardour/cairo_widget.h | 1 + 2 files changed, 17 insertions(+) diff --git a/gtk2_ardour/cairo_widget.cc b/gtk2_ardour/cairo_widget.cc index cdb0901313..e2edc24bbc 100644 --- a/gtk2_ardour/cairo_widget.cc +++ b/gtk2_ardour/cairo_widget.cc @@ -105,3 +105,19 @@ CairoWidget::set_visual_state (Gtkmm2ext::VisualState 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 (); +} diff --git a/gtk2_ardour/cairo_widget.h b/gtk2_ardour/cairo_widget.h index 7cdaf66efe..d3eac0bb02 100644 --- a/gtk2_ardour/cairo_widget.h +++ b/gtk2_ardour/cairo_widget.h @@ -48,6 +48,7 @@ protected: virtual void render (cairo_t *) = 0; virtual bool on_expose_event (GdkEventExpose *); void on_size_allocate (Gtk::Allocation &); + void on_state_changed (Gtk::StateType); Gdk::Color get_parent_bg (); int _width; ///< pixmap width