diff options
author | Ted Gould <ted@gould.cx> | 2010-02-04 11:05:31 -0800 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2010-02-04 11:05:31 -0800 |
commit | f719c72deb754503dbced9c0db48b70cff1eb21e (patch) | |
tree | efdf96658e4db59e711fada7ab41f4f0379f2e20 /libdbusmenu-gtk/client.c | |
parent | 350e98ef479c8038a0ef3e3b1aac45730c8c906a (diff) | |
parent | cf094c53aba8af282fb758e19741468cff9e88f9 (diff) | |
download | libdbusmenu-f719c72deb754503dbced9c0db48b70cff1eb21e.tar.gz libdbusmenu-f719c72deb754503dbced9c0db48b70cff1eb21e.tar.bz2 libdbusmenu-f719c72deb754503dbced9c0db48b70cff1eb21e.zip |
Fixing the check tests.
Diffstat (limited to 'libdbusmenu-gtk/client.c')
-rw-r--r-- | libdbusmenu-gtk/client.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c index 555e8d2..781326e 100644 --- a/libdbusmenu-gtk/client.c +++ b/libdbusmenu-gtk/client.c @@ -150,17 +150,23 @@ static void process_toggle_type (DbusmenuMenuitem * mi, GtkMenuItem * gmi, const GValue * value) { if (!IS_GENERICMENUITEM(gmi)) return; + if (value == NULL) return; GenericmenuitemCheckType type = GENERICMENUITEM_CHECK_TYPE_NONE; - if (value != NULL && G_VALUE_TYPE(value) == G_TYPE_STRING) { - const gchar * strval = g_value_get_string(value); + GValue strvalue = {0}; + g_value_init(&strvalue, G_TYPE_STRING); + + if (value != NULL && g_value_transform(value, &strvalue)) { + const gchar * strval = g_value_get_string(&strvalue); if (!g_strcmp0(strval, DBUSMENU_MENUITEM_TOGGLE_CHECK)) { type = GENERICMENUITEM_CHECK_TYPE_CHECKBOX; } else if (!g_strcmp0(strval, DBUSMENU_MENUITEM_TOGGLE_RADIO)) { type = GENERICMENUITEM_CHECK_TYPE_RADIO; } + + g_value_unset(&strvalue); } genericmenuitem_set_check_type(GENERICMENUITEM(gmi), type); @@ -176,8 +182,11 @@ process_toggle_state (DbusmenuMenuitem * mi, GtkMenuItem * gmi, const GValue * v GenericmenuitemState state = GENERICMENUITEM_STATE_UNCHECKED; - if (value != NULL && G_VALUE_TYPE(value) == G_TYPE_INT) { - int val = g_value_get_int(value); + GValue intvalue = {0}; + g_value_init(&intvalue, G_TYPE_INT); + + if (value != NULL && g_value_transform(value, &intvalue)) { + int val = g_value_get_int(&intvalue); if (val == DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED) { state = GENERICMENUITEM_STATE_CHECKED; |