summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorSébastien Granjoux <seb.sfo@free.fr>2012-05-26 22:32:07 +0200
committerMatthias Clasen <mclasen@redhat.com>2012-09-16 23:28:02 -0400
commitaf5ecd77e3f0d7f093a4a311bbf628980875ef36 (patch)
treeb374e516eabc48327e0e50753900200ece28a3f4 /gtk
parentf9e435df437df971cdf50dc2091bdbab1d1df698 (diff)
downloadgtk+-af5ecd77e3f0d7f093a4a311bbf628980875ef36.tar.gz
button: Clear highlight when a button is removed from a container
A button is highlighted if the private variable in_button is TRUE. This variable is set when the pointer is over the button and cleared when it left the button. When a button is hidden while there is the pointer over it, GTK generates a leave notification event, in_button is set to FALSE. But when a button is removed from a container but not destroyed, it is unrealized and loose its window. It cannot receive the leave notification event and in_button stay TRUE. So when the button get a new parent it is still highlighted. https://bugzilla.gnome.org/show_bug.cgi?id=676890
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtkbutton.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gtk/gtkbutton.c b/gtk/gtkbutton.c
index 621cd4f4ac..824f4986e9 100644
--- a/gtk/gtkbutton.c
+++ b/gtk/gtkbutton.c
@@ -1461,7 +1461,10 @@ gtk_button_unmap (GtkWidget *widget)
GtkButtonPrivate *priv = button->priv;
if (priv->event_window)
- gdk_window_hide (priv->event_window);
+ {
+ gdk_window_hide (priv->event_window);
+ priv->in_button = FALSE;
+ }
GTK_WIDGET_CLASS (gtk_button_parent_class)->unmap (widget);
}