From f0830c2a375481110762f157180ac035591e4b31 Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Mon, 24 Sep 2012 18:06:38 +0200 Subject: parser.c: make sure to disconnect from gtksettings::gtk-menu-images --- libdbusmenu-gtk/parser.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/libdbusmenu-gtk/parser.c b/libdbusmenu-gtk/parser.c index 419c15f..39cc9f8 100644 --- a/libdbusmenu-gtk/parser.c +++ b/libdbusmenu-gtk/parser.c @@ -62,6 +62,7 @@ typedef struct _ParserData gulong widget_visible_handler_id; gulong widget_screen_changed_handler_id; + GtkSettings *settings; gulong settings_notify_handler_id; } ParserData; @@ -303,14 +304,18 @@ parser_data_free (ParserData * pdata) dbusmenu_gtk_clear_signal_handler (o, &pdata->widget_toggle_handler_id); dbusmenu_gtk_clear_signal_handler (o, &pdata->widget_visible_handler_id); dbusmenu_gtk_clear_signal_handler (o, &pdata->widget_screen_changed_handler_id); - dbusmenu_gtk_clear_signal_handler (gtk_widget_get_settings (GTK_WIDGET (o)), - &pdata->settings_notify_handler_id); g_object_remove_weak_pointer(o, (gpointer*)&pdata->widget); /* since the DbusmenuMenuitem is being destroyed, uncache it from the GtkWidget */ g_object_steal_data(o, CACHED_MENUITEM); } + if (pdata->settings != NULL) { + dbusmenu_gtk_clear_signal_handler (pdata->settings, + &pdata->settings_notify_handler_id); + g_object_unref (pdata->settings); + } + if (pdata->shell != NULL) { GObject * o = G_OBJECT(pdata->shell); dbusmenu_gtk_clear_signal_handler (o, &pdata->item_inserted_handler_id); @@ -1309,10 +1314,15 @@ widget_screen_changed_cb (GtkWidget * widget, GdkScreen * old_screen, gpointer d ParserData *pdata = (ParserData *)g_object_get_data(G_OBJECT(mi), PARSER_DATA); - if (old_screen != NULL) - dbusmenu_gtk_clear_signal_handler (gtk_settings_get_for_screen (old_screen), - &pdata->settings_notify_handler_id); - pdata->settings_notify_handler_id = g_signal_connect (gtk_widget_get_settings (widget), "notify", + if (pdata->settings != NULL) + { + dbusmenu_gtk_clear_signal_handler (pdata->settings, + &pdata->settings_notify_handler_id); + g_object_unref (pdata->settings); + } + + pdata->settings = g_object_ref (gtk_widget_get_settings (widget)); + pdata->settings_notify_handler_id = g_signal_connect (pdata->settings, "notify", G_CALLBACK (settings_notify_cb), mi); /* And update widget now that we have a new GtkSettings */ -- cgit v1.2.3 From 59975c98291d252bdb1b7c955376d6498dfafea6 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Wed, 3 Oct 2012 10:57:01 -0500 Subject: 12.10.2 --- NEWS | 5 ++++- configure.ac | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index c9cc147..6beed00 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,8 @@ +12.10.2 + - Fix crashed introduced in 12.10.0's gtk-menu-images code (LP: #1053670) + 12.10.1 - - Revert the vala bindings' naming for the 12.10 cycle; revisit next time + - Revert the vala bindings' naming for the 12.10 cycle; revisit for 13.04 12.10.0 - Honor changes to GtkSettings' gtk-menu-images value (LP: #927236) diff --git a/configure.ac b/configure.ac index 9a05419..1fdc426 100644 --- a/configure.ac +++ b/configure.ac @@ -1,11 +1,11 @@ -AC_INIT(libdbusmenu, 12.10.1, ted@canonical.com) +AC_INIT(libdbusmenu, 12.10.2, ted@canonical.com) AC_COPYRIGHT([Copyright 2009,2010 Canonical]) AC_PREREQ(2.62) AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(libdbusmenu, 12.10.1, [-Wno-portability]) +AM_INIT_AUTOMAKE(libdbusmenu, 12.10.2, [-Wno-portability]) AM_MAINTAINER_MODE -- cgit v1.2.3