]> Pileus Git - ~andy/gtk/commitdiff
spinbutton: Use the widget state flags as a base for drawing
authorRui Matos <tiagomatos@gmail.com>
Wed, 21 Dec 2011 16:17:18 +0000 (16:17 +0000)
committerRui Matos <tiagomatos@gmail.com>
Mon, 9 Jan 2012 16:45:43 +0000 (16:45 +0000)
gtk/gtkspinbutton.c

index bd4f8a3534991d36fe5d07669ec0e229009a6808..c3ae12a13d2ddc21f12bd22f1dce41cd76b4a91d 100644 (file)
@@ -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;