diff options
author | Rui Matos <tiagomatos@gmail.com> | 2011-12-21 16:17:18 +0000 |
---|---|---|
committer | Rui Matos <tiagomatos@gmail.com> | 2012-01-09 16:45:43 +0000 |
commit | e9549a75144c9ff7f75ece37a5ac3248c9ca10ec (patch) | |
tree | 52e08030761b14f99b37f8b4c077245bd403cfc3 /gtk/gtkspinbutton.c | |
parent | 9118ccb02d20a26b6ecf0fd223bf2e71b1154e79 (diff) | |
download | gtk+-e9549a75144c9ff7f75ece37a5ac3248c9ca10ec.tar.gz |
spinbutton: Use the widget state flags as a base for drawing
Diffstat (limited to 'gtk/gtkspinbutton.c')
-rw-r--r-- | gtk/gtkspinbutton.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/gtk/gtkspinbutton.c b/gtk/gtkspinbutton.c index bd4f8a3534..c3ae12a13d 100644 --- a/gtk/gtkspinbutton.c +++ b/gtk/gtkspinbutton.c @@ -816,21 +816,23 @@ gtk_spin_button_panel_get_state (GtkSpinButton *spin_button, GtkStateFlags state; GtkSpinButtonPrivate *priv = spin_button->priv; - if (gtk_spin_button_panel_at_limit (spin_button, panel) || + state = gtk_widget_get_state_flags (GTK_WIDGET (spin_button)); + + state &= ~(GTK_STATE_FLAG_ACTIVE | GTK_STATE_FLAG_PRELIGHT); + + if ((state & GTK_STATE_FLAG_INSENSITIVE) || + gtk_spin_button_panel_at_limit (spin_button, panel) || !gtk_editable_get_editable (GTK_EDITABLE (spin_button))) - state = GTK_STATE_FLAG_INSENSITIVE; + { + state |= GTK_STATE_FLAG_INSENSITIVE; + } else { if (priv->click_child == panel) - state = GTK_STATE_ACTIVE; - else - { - if (priv->in_child == panel && - priv->click_child == NULL) - state = GTK_STATE_FLAG_PRELIGHT; - else - state = gtk_widget_get_state_flags (GTK_WIDGET (spin_button)); - } + state |= GTK_STATE_ACTIVE; + else if (priv->in_child == panel && + priv->click_child == NULL) + state |= GTK_STATE_FLAG_PRELIGHT; } return state; |