[gtk+] spinbutton: Use the widget state flags as a base for drawing



commit e9549a75144c9ff7f75ece37a5ac3248c9ca10ec
Author: Rui Matos <tiagomatos gmail com>
Date:   Wed Dec 21 16:17:18 2011 +0000

    spinbutton: Use the widget state flags as a base for drawing

 gtk/gtkspinbutton.c |   24 +++++++++++++-----------
 1 files changed, 13 insertions(+), 11 deletions(-)
---
diff --git a/gtk/gtkspinbutton.c b/gtk/gtkspinbutton.c
index bd4f8a3..c3ae12a 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;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]