diff options
author | Ted Gould <ted@gould.cx> | 2011-02-11 16:45:39 -0600 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2011-02-11 16:45:39 -0600 |
commit | 69e2d39c27c35386156929c44a419cb19b647316 (patch) | |
tree | 4333225f65dfb86d487a8e34d14ba9499409273f /libdbusmenu-glib | |
parent | 436d5042bbb97d2bec691a655e79875e8a1d7573 (diff) | |
download | libdbusmenu-69e2d39c27c35386156929c44a419cb19b647316.tar.gz libdbusmenu-69e2d39c27c35386156929c44a419cb19b647316.tar.bz2 libdbusmenu-69e2d39c27c35386156929c44a419cb19b647316.zip |
Explicitly destroying and recreating the properties on the root node when changed.
Diffstat (limited to 'libdbusmenu-glib')
-rw-r--r-- | libdbusmenu-glib/server.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/libdbusmenu-glib/server.c b/libdbusmenu-glib/server.c index 86ea0f0..abfa5f0 100644 --- a/libdbusmenu-glib/server.c +++ b/libdbusmenu-glib/server.c @@ -433,6 +433,15 @@ set_property (GObject * obj, guint id, const GValue * value, GParamSpec * pspec) if (priv->root != NULL) { dbusmenu_menuitem_foreach(priv->root, menuitem_signals_remove, obj); dbusmenu_menuitem_set_root(priv->root, FALSE); + + GList * properties = dbusmenu_menuitem_properties_list(priv->root); + GList * iter; + for (iter = properties; iter != NULL; iter = g_list_next(iter)) { + gchar * property = (gchar *)iter->data; + menuitem_property_changed(priv->root, property, g_variant_new_int32(0), DBUSMENU_SERVER(obj)); + } + g_list_free(properties); + g_object_unref(G_OBJECT(priv->root)); priv->root = NULL; } @@ -441,6 +450,14 @@ set_property (GObject * obj, guint id, const GValue * value, GParamSpec * pspec) g_object_ref(G_OBJECT(priv->root)); dbusmenu_menuitem_set_root(priv->root, TRUE); dbusmenu_menuitem_foreach(priv->root, menuitem_signals_create, obj); + + GList * properties = dbusmenu_menuitem_properties_list(priv->root); + GList * iter; + for (iter = properties; iter != NULL; iter = g_list_next(iter)) { + gchar * property = (gchar *)iter->data; + menuitem_property_changed(priv->root, property, dbusmenu_menuitem_property_get_variant(priv->root, property), DBUSMENU_SERVER(obj)); + } + g_list_free(properties); } else { g_debug("Setting root node to NULL"); } |