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))
{
}
void
CairoWidget::set_dirty ()
{
- ENSURE_GUI_THREAD (*this, &CairoWidget::set_dirty)
+ ENSURE_GUI_THREAD (*this, &CairoWidget::set_dirty);
queue_draw ();
}
}
void
-CairoWidget::set_active_state (CairoWidget::ActiveState s)
+CairoWidget::set_active_state (Gtkmm2ext::ActiveState s)
{
if (_active_state != s) {
_active_state = 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 ();
+}