]> Pileus Git - ~andy/gtk/commitdiff
gtk/gtkmenushell.c In enter/leave notify events, check that the crossing
authorCody Russell <bratsche@gnome.org>
Sat, 9 Aug 2008 04:20:14 +0000 (04:20 +0000)
committerCody Russell <bratsche@src.gnome.org>
Sat, 9 Aug 2008 04:20:14 +0000 (04:20 +0000)
2008-08-08  Cody Russell  <bratsche@gnome.org>

        * gtk/gtkmenushell.c
        * gtk/gtkmenu.c: In enter/leave notify events, check that the crossing
        mode is not GTK_GRAB, GTK_UNGRAB, or STATE_CHANGED.  Fixes regressions
        in menus caused by bug #56070.

svn path=/trunk/; revision=21049

ChangeLog
gtk/gtkmenu.c
gtk/gtkmenushell.c

index 3ebe4fef87b16c7553e04b4f27dd9de3903c459a..ce17983bc53a98c8a27a3d41458fa236e2fd7c95 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-08-08  Cody Russell  <bratsche@gnome.org>
+
+       * gtk/gtkmenushell.c
+       * gtk/gtkmenu.c: In enter/leave notify events, check that the crossing
+       mode is not GTK_GRAB, GTK_UNGRAB, or STATE_CHANGED.  Fixes regressions
+       in menus caused by bug #56070.
+
 2008-08-09  Sven Herzberg  <sven@imendio.com>
 
        Get the gdk+cairo test to pass distcheck, too
index d8c2e33d955a5517118adfe845d33c3d13274d7a..f3fab0571ce104d53037fe763c20710de89a37bb 100644 (file)
@@ -3623,6 +3623,11 @@ gtk_menu_enter_notify (GtkWidget        *widget,
   GtkWidget *menu_item;
   gboolean   touchscreen_mode;
 
+  if (event->mode == GDK_CROSSING_GTK_GRAB ||
+      event->mode == GDK_CROSSING_GTK_UNGRAB ||
+      event->mode == GDK_CROSSING_STATE_CHANGED)
+    return TRUE;
+
   g_object_get (gtk_widget_get_settings (widget),
                 "gtk-touchscreen-mode", &touchscreen_mode,
                 NULL);
@@ -3694,6 +3699,11 @@ gtk_menu_leave_notify (GtkWidget        *widget,
   GtkMenuItem *menu_item;
   GtkWidget *event_widget;
 
+  if (event->mode == GDK_CROSSING_GTK_GRAB ||
+      event->mode == GDK_CROSSING_GTK_UNGRAB ||
+      event->mode == GDK_CROSSING_STATE_CHANGED)
+    return TRUE;
+
   menu = GTK_MENU (widget);
   menu_shell = GTK_MENU_SHELL (widget); 
   
index f2ca2dcdf0afd4c3ad7947b361c877a6244f1309..79a250b34131844150ce782b2a027ed96c950cde 100644 (file)
@@ -802,6 +802,11 @@ gtk_menu_shell_enter_notify (GtkWidget        *widget,
 {
   GtkMenuShell *menu_shell = GTK_MENU_SHELL (widget);
 
+  if (event->mode == GDK_CROSSING_GTK_GRAB ||
+      event->mode == GDK_CROSSING_GTK_UNGRAB ||
+      event->mode == GDK_CROSSING_STATE_CHANGED)
+    return TRUE;
+
   if (menu_shell->active)
     {
       GtkWidget *menu_item;
@@ -867,6 +872,11 @@ static gint
 gtk_menu_shell_leave_notify (GtkWidget        *widget,
                             GdkEventCrossing *event)
 {
+  if (event->mode == GDK_CROSSING_GTK_GRAB ||
+      event->mode == GDK_CROSSING_GTK_GRAB ||
+      event->mode == GDK_CROSSING_STATE_CHANGED)
+    return TRUE;
+
   if (GTK_WIDGET_VISIBLE (widget))
     {
       GtkMenuShell *menu_shell = GTK_MENU_SHELL (widget);