aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-gtk/menuitem.c
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2010-06-14 21:24:29 -0500
committerTed Gould <ted@gould.cx>2010-06-14 21:24:29 -0500
commita7940079b8a074529ea504efe3e9a033197ea057 (patch)
tree757c9097f0cbd7dcba819ae3c502d219b8b13af3 /libdbusmenu-gtk/menuitem.c
parentd1cf581703855139e5759ed2fd7b3c49157061ad (diff)
downloadlibdbusmenu-a7940079b8a074529ea504efe3e9a033197ea057.tar.gz
libdbusmenu-a7940079b8a074529ea504efe3e9a033197ea057.tar.bz2
libdbusmenu-a7940079b8a074529ea504efe3e9a033197ea057.zip
Switching to a value array from a ptrarray
Diffstat (limited to 'libdbusmenu-gtk/menuitem.c')
-rw-r--r--libdbusmenu-gtk/menuitem.c32
1 files changed, 23 insertions, 9 deletions
diff --git a/libdbusmenu-gtk/menuitem.c b/libdbusmenu-gtk/menuitem.c
index f56e9e5..9a374b0 100644
--- a/libdbusmenu-gtk/menuitem.c
+++ b/libdbusmenu-gtk/menuitem.c
@@ -160,6 +160,17 @@ dbusmenu_menuitem_property_set_shortcut_string (DbusmenuMenuitem * menuitem, con
return dbusmenu_menuitem_property_set_shortcut(menuitem, key, modifier);
}
+/* Append strings to an g_value_array */
+static void
+_g_value_array_append_string (GValueArray * array, const gchar * string)
+{
+ GValue value = {0};
+ g_value_init(&value, G_TYPE_STRING);
+ g_value_set_string(&value, string);
+ g_value_array_append(array, &value);
+ return;
+}
+
/**
dbusmenu_menuitem_property_set_shortcut:
@menuitem: The #DbusmenuMenuitem to set the shortcut on
@@ -177,28 +188,31 @@ dbusmenu_menuitem_property_set_shortcut (DbusmenuMenuitem * menuitem, guint key,
g_return_val_if_fail(DBUSMENU_IS_MENUITEM(menuitem), FALSE);
g_return_val_if_fail(gtk_accelerator_valid(key, modifier), FALSE);
- GPtrArray * array = g_ptr_array_new();
+ GValueArray * array = g_value_array_new(4); /* Four seems like the max we'd need, plus it's still small */
if (modifier & GDK_CONTROL_MASK) {
- g_ptr_array_add(array, g_strdup(DBUSMENU_MENUITEM_SHORTCUT_CONTROL));
+ _g_value_array_append_string(array, DBUSMENU_MENUITEM_SHORTCUT_CONTROL);
}
if (modifier & GDK_MOD1_MASK) {
- g_ptr_array_add(array, g_strdup(DBUSMENU_MENUITEM_SHORTCUT_ALT));
+ _g_value_array_append_string(array, DBUSMENU_MENUITEM_SHORTCUT_ALT);
}
if (modifier & GDK_SHIFT_MASK) {
- g_ptr_array_add(array, g_strdup(DBUSMENU_MENUITEM_SHORTCUT_SHIFT));
+ _g_value_array_append_string(array, DBUSMENU_MENUITEM_SHORTCUT_SHIFT);
}
if (modifier & GDK_SUPER_MASK) {
- g_ptr_array_add(array, g_strdup(DBUSMENU_MENUITEM_SHORTCUT_SUPER));
+ _g_value_array_append_string(array, DBUSMENU_MENUITEM_SHORTCUT_SUPER);
}
- g_ptr_array_add(array, g_strdup(gdk_keyval_name(key)));
+ _g_value_array_append_string(array, gdk_keyval_name(key));
- GPtrArray * wrapper = g_ptr_array_new();
- g_ptr_array_add(wrapper, array);
+ GValueArray * wrapper = g_value_array_new(1);
+ GValue wrap_val = {0};
+ g_value_init(&wrap_val, G_TYPE_VALUE_ARRAY);
+ g_value_set_boxed(&wrap_val, array);
+ g_value_array_append(wrapper, &wrap_val);
GValue value = {0};
- g_value_init(&value, G_TYPE_PTR_ARRAY);
+ g_value_init(&value, G_TYPE_VALUE_ARRAY);
g_value_set_boxed(&value, wrapper);
dbusmenu_menuitem_property_set_value(menuitem, DBUSMENU_MENUITEM_PROP_SHORTCUT, &value);