[gnome-panel/gtk3] applet: Disconnect show and deactivate menu signals before destroying the applet menu
- From: Carlos Garcia Campos <carlosgc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-panel/gtk3] applet: Disconnect show and deactivate menu signals before destroying the applet menu
- Date: Sat, 22 Jan 2011 13:07:35 +0000 (UTC)
commit 8211f19c2c331b1502694a03e1b5abfdc793b56b
Author: Carlos Garcia Campos <carlosgc gnome org>
Date: Sat Jan 22 14:05:37 2011 +0100
applet: Disconnect show and deactivate menu signals before destroying the applet menu
Fixes crash while removing the menu bar or a drawer.
https://bugzilla.gnome.org/show_bug.cgi?id=639029
gnome-panel/applet.c | 10 +++++++++-
1 files changed, 9 insertions(+), 1 deletions(-)
---
diff --git a/gnome-panel/applet.c b/gnome-panel/applet.c
index 805160c..7db4dae 100644
--- a/gnome-panel/applet.c
+++ b/gnome-panel/applet.c
@@ -41,6 +41,8 @@ static GSList *registered_applets = NULL;
static GSList *queued_position_saves = NULL;
static guint queued_position_source = 0;
+static void applet_menu_show (GtkWidget *w, AppletInfo *info);
+static void applet_menu_deactivate (GtkWidget *w, AppletInfo *info);
static inline PanelWidget *
panel_applet_get_panel_widget (AppletInfo *info)
@@ -166,6 +168,9 @@ panel_applet_recreate_menu (AppletInfo *info)
menu->submenu =NULL;
}
+ g_signal_handlers_disconnect_by_func (info->menu, G_CALLBACK (applet_menu_show), info);
+ g_signal_handlers_disconnect_by_func (info->menu, G_CALLBACK (applet_menu_deactivate), info);
+
g_object_unref (info->menu);
info->menu = panel_applet_create_menu (info);
}
@@ -773,8 +778,11 @@ panel_applet_destroy (GtkWidget *widget,
panel_lockdown_notify_remove (G_CALLBACK (panel_applet_recreate_menu),
info);
- if (info->menu)
+ if (info->menu) {
+ g_signal_handlers_disconnect_by_func (info->menu, G_CALLBACK (applet_menu_show), info);
+ g_signal_handlers_disconnect_by_func (info->menu, G_CALLBACK (applet_menu_deactivate), info);
g_object_unref (info->menu);
+ }
info->menu = NULL;
if (info->data_destroy)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]