[gtk+] Reset the pressed state of a button when the screen changes



commit b20f2d26b4b4ffa68bc92d339ab86c61612009da
Author: Christian Dywan <christian twotoasts de>
Date:   Fri Dec 11 17:17:38 2009 +0100

    Reset the pressed state of a button when the screen changes
    
    Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=599397

 gtk/gtkbutton.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtkbutton.c b/gtk/gtkbutton.c
index db46804..2f8b98f 100644
--- a/gtk/gtkbutton.c
+++ b/gtk/gtkbutton.c
@@ -2137,12 +2137,23 @@ static void
 gtk_button_screen_changed (GtkWidget *widget,
 			   GdkScreen *previous_screen)
 {
+  GtkButton *button;
   GtkSettings *settings;
   guint show_image_connection;
 
   if (!gtk_widget_has_screen (widget))
     return;
 
+  button = GTK_BUTTON (widget);
+
+  /* If the button is being pressed while the screen changes the
+    release might never occur, so we reset the state. */
+  if (button->button_down)
+    {
+      button->button_down = FALSE;
+      gtk_button_update_state (button);
+    }
+
   settings = gtk_widget_get_settings (widget);
 
   show_image_connection = 
@@ -2159,7 +2170,7 @@ gtk_button_screen_changed (GtkWidget *widget,
 		     I_("gtk-button-connection"),
 		     GUINT_TO_POINTER (show_image_connection));
 
-  show_image_change_notify (GTK_BUTTON (widget));
+  show_image_change_notify (button);
 }
 
 static void



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