File gnome-main-menu-focus-on-menu-unmap.patch of Package gnome-main-menu

diff -Npur gnome-main-menu-old/main-menu/src/main-menu-ui.c gnome-main-menu-new/main-menu/src/main-menu-ui.c
--- gnome-main-menu-old/main-menu/src/main-menu-ui.c	2009-10-20 17:25:33.629822150 +0800
+++ gnome-main-menu-new/main-menu/src/main-menu-ui.c	2009-10-20 17:29:21.659098353 +0800
@@ -2194,6 +2194,14 @@ slab_window_unmap_event_cb (GtkWidget *w
 	gtk_grab_remove (widget);
 }
 
+
+static void
+grabbing_window_unmap_cb               (GtkWidget       *widget,
+                                        gpointer         user_data)
+{
+        grab_pointer_and_keyboard (MAIN_MENU_UI (user_data), 0);
+}
+
 static gboolean
 slab_window_grab_broken_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data)
 {
@@ -2204,10 +2212,14 @@ slab_window_grab_broken_cb (GtkWidget *w
 	if (grab_event->grab_window) {
 		gdk_window_get_user_data (grab_event->grab_window, & window_data);
 
-		if (GTK_IS_WIDGET (window_data))
+		if (GTK_IS_WIDGET (window_data)) {
 			g_signal_connect (
 				G_OBJECT (window_data), "event",
 				G_CALLBACK (grabbing_window_event_cb), user_data);
+		        g_signal_connect ((gpointer) (window_data), "unmap",
+                                    G_CALLBACK (grabbing_window_unmap_cb),
+                                    user_data);
+		}
 	}
 
 	return FALSE;
@@ -2471,7 +2483,7 @@ search_tomboy_bindkey_cb (gchar *key_str
 static gboolean
 grabbing_window_event_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data)
 {
-	if (event->type == GDK_UNMAP || event->type == GDK_SELECTION_CLEAR)
+	if (event->type == GDK_SELECTION_CLEAR)
 		grab_pointer_and_keyboard (MAIN_MENU_UI (user_data), gdk_event_get_time (event));
 
 	return FALSE;
openSUSE Build Service is sponsored by