Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > d60bd1f35e0c82afb5f88d78afd23ee9 > files > 22

NetworkManager-0.7.0-9.el5.src.rpm

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