← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~mterry/dbusmenu/fix-props-return into lp:dbusmenu

 

Michael Terry has proposed merging lp:~mterry/dbusmenu/fix-props-return into lp:dbusmenu.

Requested reviews:
  DBus Menu Team (dbusmenu-team)

For more details, see:
https://code.launchpad.net/~mterry/dbusmenu/fix-props-return/+merge/48014

Seems like the variant type signature is wrong in this one case. (noticed in nm-applet output)
-- 
https://code.launchpad.net/~mterry/dbusmenu/fix-props-return/+merge/48014
Your team ayatana-commits is subscribed to branch lp:dbusmenu.
=== modified file 'libdbusmenu-glib/server.c'
--- libdbusmenu-glib/server.c	2011-01-26 17:12:04 +0000
+++ libdbusmenu-glib/server.c	2011-01-31 16:02:54 +0000
@@ -946,9 +946,9 @@
 		ret = g_variant_builder_end(&builder);
 	} else {
 		GError * error = NULL;
-		ret = g_variant_parse(g_variant_type_new("a(ia(sv))"), "[]", NULL, NULL, NULL);
+		ret = g_variant_parse(g_variant_type_new("a(ia{sv})"), "[]", NULL, NULL, NULL);
 		if (error != NULL) {
-			g_warning("Unable to parse '[]' as a 'a(ia(sv))': %s", error->message);
+			g_warning("Unable to parse '[]' as a 'a(ia{sv})': %s", error->message);
 			g_error_free(error);
 			ret = NULL;
 		}

=== modified file 'libdbusmenu-gtk/parser.c'
--- libdbusmenu-gtk/parser.c	2011-01-27 19:54:18 +0000
+++ libdbusmenu-gtk/parser.c	2011-01-31 16:02:54 +0000
@@ -649,6 +649,27 @@
             }
         }
     }
+  else if (pspec->name == g_intern_static_string ("submenu"))
+    {
+      /* The underlying submenu got swapped out.  Let's see what it is now. */
+      /* First, delete any children that may exist currently. */
+      DbusmenuMenuitem * item = DBUSMENU_MENUITEM(g_object_get_data(G_OBJECT(widget), CACHED_MENUITEM));
+      if (item != NULL)
+        {
+          GList * children = dbusmenu_menuitem_get_children (item);
+          while (children != NULL) {
+            dbusmenu_menuitem_child_delete (item, DBUSMENU_MENUITEM(children->data));
+            children = children->next;
+          }
+        }
+
+      /* Now parse new submenu. */
+      GtkWidget * menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget));
+      RecurseContext recurse = {0};
+      recurse.toplevel = gtk_widget_get_toplevel(widget);
+      recurse.parent = item;
+      parse_menu_structure_helper(menu, &recurse);
+    }
 }
 
 static gboolean