aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-glib
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2009-12-15 14:03:08 -0600
committerTed Gould <ted@gould.cx>2009-12-15 14:03:08 -0600
commit3bee257cedf6af6f94b2e77ee77f6eb76e784a90 (patch)
treed0fa648fde815d0af6bf296554f5371d850ea61b /libdbusmenu-glib
parent167d610ec25a9074c09dfc44e82995582b24b90a (diff)
downloadlibdbusmenu-3bee257cedf6af6f94b2e77ee77f6eb76e784a90.tar.gz
libdbusmenu-3bee257cedf6af6f94b2e77ee77f6eb76e784a90.tar.bz2
libdbusmenu-3bee257cedf6af6f94b2e77ee77f6eb76e784a90.zip
Adding in transforms for our getters.
Diffstat (limited to 'libdbusmenu-glib')
-rw-r--r--libdbusmenu-glib/menuitem.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/libdbusmenu-glib/menuitem.c b/libdbusmenu-glib/menuitem.c
index d8da357..dc01157 100644
--- a/libdbusmenu-glib/menuitem.c
+++ b/libdbusmenu-glib/menuitem.c
@@ -885,7 +885,16 @@ dbusmenu_menuitem_property_get_bool (DbusmenuMenuitem * mi, const gchar * proper
{
const GValue * value = dbusmenu_menuitem_property_get_value(mi, property);
if (value == NULL) return FALSE;
- if (G_VALUE_TYPE(value) != G_TYPE_BOOLEAN) return FALSE;
+ if (G_VALUE_TYPE(value) != G_TYPE_BOOLEAN) {
+ if (g_value_type_transformable(G_VALUE_TYPE(value), G_TYPE_BOOLEAN)) {
+ GValue boolval = {0};
+ g_value_init(&boolval, G_TYPE_BOOLEAN);
+ g_value_transform(value, &boolval);
+ return g_value_get_boolean(&boolval);
+ } else {
+ return FALSE;
+ }
+ }
return g_value_get_boolean(value);
}
@@ -904,7 +913,16 @@ dbusmenu_menuitem_property_get_int (DbusmenuMenuitem * mi, const gchar * propert
{
const GValue * value = dbusmenu_menuitem_property_get_value(mi, property);
if (value == NULL) return 0;
- if (G_VALUE_TYPE(value) != G_TYPE_INT) return 0;
+ if (G_VALUE_TYPE(value) != G_TYPE_INT) {
+ if (g_value_type_transformable(G_VALUE_TYPE(value), G_TYPE_INT)) {
+ GValue intval = {0};
+ g_value_init(&intval, G_TYPE_INT);
+ g_value_transform(value, &intval);
+ return g_value_get_int(&intval);
+ } else {
+ return 0;
+ }
+ }
return g_value_get_int(value);
}