diff options
author | Ted Gould <ted@gould.cx> | 2010-02-18 10:53:38 -0600 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2010-02-18 10:53:38 -0600 |
commit | de00d014bce1def051bacc11abbd429c38acebfc (patch) | |
tree | 1d3cc7be1260d14d488934e002613e3d1003f4e1 /libdbusmenu-glib/server.c | |
parent | c1ab2f992a08d7ab9a34db1c9b6fb1136e4af7e4 (diff) | |
parent | 1664971299f0495c531ac2c46a599ae52f4abe0d (diff) | |
download | libdbusmenu-de00d014bce1def051bacc11abbd429c38acebfc.tar.gz libdbusmenu-de00d014bce1def051bacc11abbd429c38acebfc.tar.bz2 libdbusmenu-de00d014bce1def051bacc11abbd429c38acebfc.zip |
* Upstream Merge
* Adding in menuitem proxy object.
Diffstat (limited to 'libdbusmenu-glib/server.c')
-rw-r--r-- | libdbusmenu-glib/server.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/libdbusmenu-glib/server.c b/libdbusmenu-glib/server.c index 55d339f..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++; |