- priv->always_show_toggle ||
- (gtk_widget_get_state (widget) == GTK_STATE_PRELIGHT))
- {
- GdkWindow *window;
-
- window = gtk_widget_get_window (widget);
- state_type = gtk_widget_get_state (widget);
-
- if (priv->inconsistent)
- shadow_type = GTK_SHADOW_ETCHED_IN;
- else if (priv->active)
- shadow_type = GTK_SHADOW_IN;
- else
- shadow_type = GTK_SHADOW_OUT;
-
- if (!gtk_widget_is_sensitive (widget))
- state_type = GTK_STATE_INSENSITIVE;
-
- if (priv->draw_as_radio)
- {
- gtk_paint_option (style, cr,
- state_type, shadow_type,
- widget, "option",
- x, y, indicator_size, indicator_size);
- }
- else
- {
- gtk_paint_check (style, cr,
- state_type, shadow_type,
- widget, "check",
- x, y, indicator_size, indicator_size);
- }
- }
+ priv->always_show_toggle ||
+ (state & GTK_STATE_FLAG_PRELIGHT))
+ {
+ gtk_style_context_save (context);
+
+ if (priv->inconsistent)
+ state |= GTK_STATE_FLAG_INCONSISTENT;
+ else if (priv->active)
+ state |= GTK_STATE_FLAG_ACTIVE;
+
+ gtk_style_context_set_state (context, state);
+
+ if (priv->draw_as_radio)
+ {
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_RADIO);
+ gtk_render_option (context, cr, x, y,
+ indicator_size, indicator_size);
+ }
+ else
+ {
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_CHECK);
+ gtk_render_check (context, cr, x, y,
+ indicator_size, indicator_size);
+ }
+
+ gtk_style_context_restore (context);
+ }