commit e9376fd71c29d4f2e65413519d8f4b25965a1c85 Author: Dan Williams <dcbw@redhat.com> Date: Thu Dec 11 21:42:14 2008 +0000 src/applet.c - (applet_pre_keyring_callback): handle right-click menu too 2008-12-11 Dan Williams <dcbw@redhat.com> * src/applet.c - (applet_pre_keyring_callback): handle right-click menu too svn path=/branches/NETWORKMANAGER_APPLET_0_7/; revision=1071 diff -up NetworkManager-0.7.0/network-manager-applet-0.7.0/src/applet.c.foo NetworkManager-0.7.0/network-manager-applet-0.7.0/src/applet.c --- NetworkManager-0.7.0/network-manager-applet-0.7.0/src/applet.c.foo 2009-05-04 12:34:50.000000000 -0400 +++ NetworkManager-0.7.0/network-manager-applet-0.7.0/src/applet.c 2009-05-04 12:35:02.000000000 -0400 @@ -2335,11 +2335,10 @@ static void applet_pre_keyring_callback (gpointer user_data) { NMApplet *applet = NM_APPLET (user_data); + GdkScreen *screen; + GdkDisplay *display; if (applet->menu && applet->menu->window) { - GdkScreen *screen; - GdkDisplay *display; - screen = gdk_drawable_get_screen (applet->menu->window); display = gdk_screen_get_display (screen); g_object_ref (display); @@ -2356,6 +2355,22 @@ applet_pre_keyring_callback (gpointer us gdk_display_sync (display); g_object_unref (display); } + + if (applet->context_menu && applet->context_menu->window) { + screen = gdk_drawable_get_screen (applet->context_menu->window); + display = gdk_screen_get_display (screen); + g_object_ref (display); + + gtk_menu_popdown (GTK_MENU (applet->context_menu)); + + /* Ensure that the widget really gets hidden before letting the + * keyring calls happen; if the X events haven't all gone through when + * the keyring dialog comes up, then the menu will actually still have + * the screen grab even after we've called gtk_widget_hide(). + */ + gdk_display_sync (display); + g_object_unref (display); + } } static gboolean