aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-glib/menuitem.c
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2009-12-22 14:38:35 -0600
committerTed Gould <ted@gould.cx>2009-12-22 14:38:35 -0600
commit8a22801594dfe9d2628a1b80984f3f917137d053 (patch)
tree6259722ba4e6556d82a4cb62a89b08a10b3a2590 /libdbusmenu-glib/menuitem.c
parente930f7d167fe1e5a889be0fd7e1ed0b625773fe4 (diff)
parent7ca0624a5be9ffffa16ea8e6d6d8533cb7d87efb (diff)
downloadlibdbusmenu-8a22801594dfe9d2628a1b80984f3f917137d053.tar.gz
libdbusmenu-8a22801594dfe9d2628a1b80984f3f917137d053.tar.bz2
libdbusmenu-8a22801594dfe9d2628a1b80984f3f917137d053.zip
Fixing the handling of typed properties, especially bools.
Diffstat (limited to 'libdbusmenu-glib/menuitem.c')
-rw-r--r--libdbusmenu-glib/menuitem.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/libdbusmenu-glib/menuitem.c b/libdbusmenu-glib/menuitem.c
index dc01157..a03117c 100644
--- a/libdbusmenu-glib/menuitem.c
+++ b/libdbusmenu-glib/menuitem.c
@@ -122,8 +122,8 @@ dbusmenu_menuitem_class_init (DbusmenuMenuitemClass *klass)
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(DbusmenuMenuitemClass, property_changed),
NULL, NULL,
- _dbusmenu_menuitem_marshal_VOID__STRING_STRING,
- G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING);
+ _dbusmenu_menuitem_marshal_VOID__STRING_POINTER,
+ G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_POINTER);
/**
DbusmenuMenuitem::item-activated:
@arg0: The #DbusmenuMenuitem object.
@@ -250,7 +250,7 @@ static guint menuitem_next_id = 1;
/* A small little function to both clear the insides of a
value as well as the memory it itself uses. */
static void
-g_value_free (gpointer data)
+_g_value_free (gpointer data)
{
if (data == NULL) return;
GValue * value = (GValue*)data;
@@ -269,7 +269,7 @@ dbusmenu_menuitem_init (DbusmenuMenuitem *self)
priv->id = 0;
priv->children = NULL;
- priv->properties = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_value_free);
+ priv->properties = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, _g_value_free);
priv->root = FALSE;
@@ -815,12 +815,13 @@ dbusmenu_menuitem_property_set_value (DbusmenuMenuitem * mi, const gchar * prope
g_value_init(lval, G_VALUE_TYPE(value));
g_value_copy(value, lval);
- g_hash_table_insert(priv->properties, lprop, lval);
+ g_hash_table_replace(priv->properties, lprop, lval);
#ifdef MASSIVEDEBUGGING
gchar * valstr = g_strdup_value_contents(lval);
g_debug("Menuitem %d (%s) signalling property '%s' changed to '%s'", ID(mi), LABEL(mi), property, g_utf8_strlen(valstr, 50) < 25 ? valstr : "<too long>");
g_free(valstr);
#endif
+
g_signal_emit(G_OBJECT(mi), signals[PROPERTY_CHANGED], 0, lprop, lval, TRUE);
return TRUE;