aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog17
-rw-r--r--debian/control1
-rw-r--r--debian/patches/disconnect-more-signals.patch18
-rw-r--r--debian/patches/fix-defaults-in-client.patch65
-rw-r--r--debian/patches/series2
-rwxr-xr-xdebian/rules1
6 files changed, 104 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog
index 132e39d..74b174e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,20 @@
+libdbusmenu (0.3.99-0ubuntu3) natty; urgency=low
+
+ * Fix LP: #723873 - ensure that changing a menuitem property to a default
+ value gets propagated properly in the client
+ - add debian/patches/fix-defaults-in-client.patch
+ - update debian/patches/series
+
+ -- Chris Coulson <chris.coulson@canonical.com> Tue, 01 Mar 2011 00:47:24 +0000
+
+libdbusmenu (0.3.99-0ubuntu2) natty; urgency=low
+
+ * debian/patches/disconnect-more-signals.patch:
+ - Fix some crashes by disconnecting more signals when a menuitem is
+ deleted. LP: #725980 and LP: #726153
+
+ -- Michael Terry <mterry@ubuntu.com> Mon, 28 Feb 2011 10:09:57 -0500
+
libdbusmenu (0.3.99-0ubuntu1) natty; urgency=low
[ Ted Gould ]
diff --git a/debian/control b/debian/control
index 0703fed..6d879d8 100644
--- a/debian/control
+++ b/debian/control
@@ -6,6 +6,7 @@ XSBC-Original-Maintainer: The Ayatana Packagers <pkg-ayatana-devel@lists.alioth.
Uploaders: Evgeni Golov <evgeni@debian.org>
Build-Depends: debhelper (>= 5.0),
cdbs (>= 0.4.41),
+ quilt,
libgtk2.0-dev (>= 2.23.2-0ubuntu2),
libgtk-3-dev (>= 2.99.2-1ubuntu2),
libgdk-pixbuf2.0-dev (>= 2.22.1-0ubuntu4),
diff --git a/debian/patches/disconnect-more-signals.patch b/debian/patches/disconnect-more-signals.patch
new file mode 100644
index 0000000..653d32c
--- /dev/null
+++ b/debian/patches/disconnect-more-signals.patch
@@ -0,0 +1,18 @@
+=== modified file 'libdbusmenu-gtk/parser.c'
+Index: libdbusmenu-0.3.99/libdbusmenu-gtk/parser.c
+===================================================================
+--- libdbusmenu-0.3.99.orig/libdbusmenu-gtk/parser.c 2011-02-28 10:09:40.907065942 -0500
++++ libdbusmenu-0.3.99/libdbusmenu-gtk/parser.c 2011-02-28 10:09:43.037065942 -0500
+@@ -129,6 +129,12 @@
+ if (pdata != NULL && pdata->widget != NULL) {
+ g_signal_handlers_disconnect_matched(pdata->widget, (GSignalMatchType)G_SIGNAL_MATCH_FUNC,
+ 0, 0, NULL, G_CALLBACK(widget_notify_cb), NULL);
++ g_signal_handlers_disconnect_matched(pdata->widget, (GSignalMatchType)G_SIGNAL_MATCH_FUNC,
++ 0, 0, NULL, G_CALLBACK(accel_changed), NULL);
++ g_signal_handlers_disconnect_matched(pdata->widget, (GSignalMatchType)G_SIGNAL_MATCH_FUNC,
++ 0, 0, NULL, G_CALLBACK(checkbox_toggled), NULL);
++ g_signal_handlers_disconnect_matched(pdata->widget, (GSignalMatchType)G_SIGNAL_MATCH_FUNC,
++ 0, 0, NULL, G_CALLBACK(menuitem_notify_cb), NULL);
+ g_object_remove_weak_pointer(G_OBJECT(pdata->widget), (gpointer*)&pdata->widget);
+ }
+
diff --git a/debian/patches/fix-defaults-in-client.patch b/debian/patches/fix-defaults-in-client.patch
new file mode 100644
index 0000000..a299b32
--- /dev/null
+++ b/debian/patches/fix-defaults-in-client.patch
@@ -0,0 +1,65 @@
+=== modified file 'libdbusmenu-glib/menuitem.c'
+Index: libdbusmenu-0.3.99/libdbusmenu-glib/menuitem.c
+===================================================================
+--- libdbusmenu-0.3.99.orig/libdbusmenu-glib/menuitem.c 2011-02-25 03:30:16 +0000
++++ libdbusmenu-0.3.99/libdbusmenu-glib/menuitem.c 2011-02-28 22:51:34 +0000
+@@ -1150,9 +1150,9 @@
+ DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
+ GVariant * default_value = NULL;
+
++ const gchar * type = menuitem_get_type(mi);
++
+ if (value != NULL) {
+- const gchar * type = menuitem_get_type(mi);
+-
+ /* Check the expected type to see if we want to have a warning */
+ GVariantType * default_type = dbusmenu_defaults_default_get_type(priv->defaults, type, property);
+ if (default_type != NULL) {
+@@ -1163,22 +1163,23 @@
+ g_warning("Setting menuitem property '%s' with value of type '%s' when expecting '%s'", property, g_variant_get_type_string(value), g_variant_type_peek_string(default_type));
+ }
+ }
++ }
+
+- /* Check the defaults database to see if we have a default
+- for this property. */
+- default_value = dbusmenu_defaults_default_get(priv->defaults, type, property);
+- if (default_value != NULL) {
+- /* Now see if we're setting this to the same value as the
+- default. If we are then we just want to swallow this variant
+- and make the function behave like we're clearing it. */
+- if (g_variant_equal(default_value, value)) {
+- g_variant_ref_sink(value);
+- g_variant_unref(value);
+- value = NULL;
+- }
++ /* Check the defaults database to see if we have a default
++ for this property. */
++ default_value = dbusmenu_defaults_default_get(priv->defaults, type, property);
++ if (default_value != NULL && value != NULL) {
++ /* Now see if we're setting this to the same value as the
++ default. If we are then we just want to swallow this variant
++ and make the function behave like we're clearing it. */
++ if (g_variant_equal(default_value, value)) {
++ g_variant_ref_sink(value);
++ g_variant_unref(value);
++ value = NULL;
+ }
+ }
+
++
+ gboolean replaced = FALSE;
+ gpointer currentval = g_hash_table_lookup(priv->properties, property);
+
+@@ -1371,9 +1372,7 @@
+ g_return_if_fail(DBUSMENU_IS_MENUITEM(mi));
+ g_return_if_fail(property != NULL);
+
+- DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
+-
+- g_hash_table_remove(priv->properties, property);
++ dbusmenu_menuitem_property_set_variant(mi, property, NULL);
+
+ return;
+ }
+
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..ab2b338
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,2 @@
+disconnect-more-signals.patch
+fix-defaults-in-client.patch
diff --git a/debian/rules b/debian/rules
index cd1d01f..10140ea 100755
--- a/debian/rules
+++ b/debian/rules
@@ -3,6 +3,7 @@
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/gnome.mk
include /usr/share/cdbs/1/rules/autoreconf.mk
+include /usr/share/cdbs/1/rules/patchsys-quilt.mk
DEB_SRCDIR = .
DEB_BUILDDIR = $(DEB_SRCDIR)/build