--- gtk+-2.4.4/gtk/gtkmenushell.c.old Thu Aug 26 23:45:28 2004 +++ gtk+-2.4.4/gtk/gtkmenushell.c Fri Aug 27 00:13:33 2004 @@ -37,7 +37,7 @@ #include "gtktearoffmenuitem.h" #include "gtkwindow.h" -#define MENU_SHELL_TIMEOUT 500 +#define MENU_SHELL_TIMEOUT 2000 enum { DEACTIVATE, @@ -156,6 +156,7 @@ static GtkContainerClass *parent_class = NULL; static guint menu_shell_signals[LAST_SIGNAL] = { 0 }; +static int last_crossing_time; GType gtk_menu_shell_get_type (void) @@ -418,6 +419,7 @@ gtk_grab_add (GTK_WIDGET (menu_shell)); menu_shell->have_grab = TRUE; menu_shell->active = TRUE; + last_crossing_time = 0; } } @@ -545,6 +547,13 @@ menu_shell->activate_time = 0; deactivate = FALSE; } + + if (last_crossing_time != 0 + && ((event->time - last_crossing_time) < 500)) + { + last_crossing_time = 0; + deactivate = FALSE; + } if (deactivate) { @@ -597,6 +606,8 @@ if (menu_shell->active) { menu_item = gtk_get_event_widget ((GdkEvent*) event); + + last_crossing_time = event->time; if (!menu_item || (GTK_IS_MENU_ITEM (menu_item) &&