diff options
author | Rui Matos <tiagomatos@gmail.com> | 2011-12-21 14:20:02 +0000 |
---|---|---|
committer | Rui Matos <tiagomatos@gmail.com> | 2012-01-09 16:31:11 +0000 |
commit | 6dd0bd5536666302fe7429b8b95632977e050610 (patch) | |
tree | 721df4b561594b8cc62d35611fb9775ccc8a462d /gtk/gtkradiobutton.c | |
parent | c98e9c94e79ad280dd97f44c2a7986bcb4f9c117 (diff) | |
download | gtk+-6dd0bd5536666302fe7429b8b95632977e050610.tar.gz |
radiobutton: Use the widget state flags as a base for drawing
Diffstat (limited to 'gtk/gtkradiobutton.c')
-rw-r--r-- | gtk/gtkradiobutton.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gtk/gtkradiobutton.c b/gtk/gtkradiobutton.c index c835ae027e..84ff38cc12 100644 --- a/gtk/gtkradiobutton.c +++ b/gtk/gtkradiobutton.c @@ -911,6 +911,7 @@ gtk_radio_button_draw_indicator (GtkCheckButton *check_button, button = GTK_BUTTON (check_button); toggle_button = GTK_TOGGLE_BUTTON (check_button); context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); @@ -931,6 +932,11 @@ gtk_radio_button_draw_indicator (GtkCheckButton *check_button, if (!interior_focus || !(child && gtk_widget_get_visible (child))) x += focus_width + focus_pad; + state &= ~(GTK_STATE_FLAG_INCONSISTENT | + GTK_STATE_FLAG_ACTIVE | + GTK_STATE_FLAG_SELECTED | + GTK_STATE_FLAG_PRELIGHT); + if (gtk_toggle_button_get_inconsistent (toggle_button)) state |= GTK_STATE_FLAG_INCONSISTENT; else if (gtk_toggle_button_get_active (toggle_button)) @@ -940,10 +946,8 @@ gtk_radio_button_draw_indicator (GtkCheckButton *check_button, (button->priv->button_down && button->priv->in_button)) state |= GTK_STATE_FLAG_SELECTED; - if (button->priv->in_button) + if (button->priv->in_button && !(state & GTK_STATE_FLAG_INSENSITIVE)) state |= GTK_STATE_FLAG_PRELIGHT; - else if (!gtk_widget_is_sensitive (widget)) - state |= GTK_STATE_FLAG_INSENSITIVE; if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) x = allocation.width - (indicator_size + x); |