summaryrefslogtreecommitdiff
path: root/gtk/gtkspinbutton.c
diff options
context:
space:
mode:
authorRui Matos <tiagomatos@gmail.com>2011-12-21 16:17:18 +0000
committerRui Matos <tiagomatos@gmail.com>2012-01-09 16:45:43 +0000
commite9549a75144c9ff7f75ece37a5ac3248c9ca10ec (patch)
tree52e08030761b14f99b37f8b4c077245bd403cfc3 /gtk/gtkspinbutton.c
parent9118ccb02d20a26b6ecf0fd223bf2e71b1154e79 (diff)
downloadgtk+-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.c24
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;