diff options
author | Sebastien Bacher <seb128@ubuntu.com> | 2010-02-18 18:18:30 +0100 |
---|---|---|
committer | Sebastien Bacher <seb128@ubuntu.com> | 2010-02-18 18:18:30 +0100 |
commit | 0af5090188b1002d4cbca3e8a60b701153a8b391 (patch) | |
tree | 18ee6d3f99611b8cc84327c338525df62ee5d2d2 /libdbusmenu-glib/server.c | |
parent | aadfece2677f23d685f050ec479aaee93c6ababc (diff) | |
parent | 4ee1fccc17c4734c356ee528dd3a0665f5e296f0 (diff) | |
download | libdbusmenu-0af5090188b1002d4cbca3e8a60b701153a8b391.tar.gz libdbusmenu-0af5090188b1002d4cbca3e8a60b701153a8b391.tar.bz2 libdbusmenu-0af5090188b1002d4cbca3e8a60b701153a8b391.zip |
releasing version 0.2.5-0ubuntu1
Diffstat (limited to 'libdbusmenu-glib/server.c')
-rw-r--r-- | libdbusmenu-glib/server.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/libdbusmenu-glib/server.c b/libdbusmenu-glib/server.c index 44ee911..f6dddf1 100644 --- a/libdbusmenu-glib/server.c +++ b/libdbusmenu-glib/server.c @@ -301,10 +301,29 @@ menuitem_property_changed (DbusmenuMenuitem * mi, gchar * property, GValue * val return; } +/* Adds the signals for this entry to the list and looks at + the children of this entry to add the signals we need + as well. We like signals. */ +static void +added_check_children (gpointer data, gpointer user_data) +{ + DbusmenuMenuitem * mi = (DbusmenuMenuitem *)data; + DbusmenuServer * server = (DbusmenuServer *)user_data; + + menuitem_signals_create(mi, server); + g_list_foreach(dbusmenu_menuitem_get_children(mi), added_check_children, server); + + return; +} + +/* Callback for when a child is added. We need to connect everything + up and signal that the layout has changed. */ static void menuitem_child_added (DbusmenuMenuitem * parent, DbusmenuMenuitem * child, guint pos, DbusmenuServer * server) { menuitem_signals_create(child, server); + g_list_foreach(dbusmenu_menuitem_get_children(child), added_check_children, server); + /* TODO: We probably need to group the layout update signals to make the number more reasonble. */ DbusmenuServerPrivate * priv = DBUSMENU_SERVER_GET_PRIVATE(server); priv->layout_revision++; @@ -378,7 +397,7 @@ _dbusmenu_server_get_layout (DbusmenuServer * server, gint parent, guint * revis if (parent == 0) { if (priv->root == NULL) { /* g_debug("Getting layout without root node!"); */ - g_ptr_array_add(xmlarray, g_strdup("<menu/>")); + g_ptr_array_add(xmlarray, g_strdup("<menu id=\"0\"/>")); } else { dbusmenu_menuitem_buildxml(priv->root, xmlarray); } |