network-manager-applet r627 - in trunk: . src



Author: dcbw
Date: Mon Mar 31 00:26:06 2008
New Revision: 627
URL: http://svn.gnome.org/viewvc/network-manager-applet?rev=627&view=rev

Log:
2008-03-30  Dan Williams  <dcbw redhat com>

	* src/applet.c
		- (nma_menu_deactivate_cb, nma_menu_clear): punt the menu destruction
			to a low-priority idle handler so that any menu item 'activate'
			signals fire before the menu is destroyed



Modified:
   trunk/ChangeLog
   trunk/src/applet.c

Modified: trunk/src/applet.c
==============================================================================
--- trunk/src/applet.c	(original)
+++ trunk/src/applet.c	Mon Mar 31 00:26:06 2008
@@ -910,13 +910,16 @@
 //	nmi_dbus_signal_user_interface_activated (applet->connection);
 }
 
+static gboolean nma_menu_clear (NMApplet *applet);
+
 static void
 nma_menu_deactivate_cb (GtkWidget *widget, NMApplet *applet)
 {
-	if (applet->menu) {
-		gtk_widget_destroy (applet->menu);
-		applet->menu = NULL;
-	}
+	/* Must punt the destroy to a low-priority idle to ensure that
+	 * the menu items don't get destroyed before any 'activate' signal
+	 * fires for an item.
+	 */
+	g_idle_add_full (G_PRIORITY_LOW, (GSourceFunc) nma_menu_clear, applet, NULL);
 }
 
 /*
@@ -945,13 +948,14 @@
  * Destroy the menu and each of its items data tags
  *
  */
-static void nma_menu_clear (NMApplet *applet)
+static gboolean nma_menu_clear (NMApplet *applet)
 {
-	g_return_if_fail (applet != NULL);
+	g_return_val_if_fail (applet != NULL, FALSE);
 
 	if (applet->menu)
 		gtk_widget_destroy (applet->menu);
 	applet->menu = nma_menu_create (applet);
+	return FALSE;
 }
 
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]