diff options
author | Ted Gould <ted@gould.cx> | 2009-12-15 14:03:08 -0600 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2009-12-15 14:03:08 -0600 |
commit | 3bee257cedf6af6f94b2e77ee77f6eb76e784a90 (patch) | |
tree | d0fa648fde815d0af6bf296554f5371d850ea61b /libdbusmenu-glib | |
parent | 167d610ec25a9074c09dfc44e82995582b24b90a (diff) | |
download | libdbusmenu-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.c | 22 |
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); } |