diff options
-rw-r--r-- | src/eggdbus/eggdbusinterfaceproxy.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/eggdbus/eggdbusinterfaceproxy.c b/src/eggdbus/eggdbusinterfaceproxy.c index 5774e23..ba37757 100644 --- a/src/eggdbus/eggdbusinterfaceproxy.c +++ b/src/eggdbus/eggdbusinterfaceproxy.c @@ -245,7 +245,29 @@ egg_dbus_interface_proxy_get_property (GObject *object, } else { - g_value_copy (egg_dbus_variant_get_gvalue (variant), value); + const GValue *variant_value; + + variant_value = egg_dbus_variant_get_gvalue (variant); + + if (G_VALUE_TYPE (variant_value) == G_TYPE_UINT) + { + if (G_TYPE_IS_FLAGS (G_VALUE_TYPE (value))) + { + g_value_set_flags (value, g_value_get_uint (variant_value)); + } + else if (G_TYPE_IS_ENUM (G_VALUE_TYPE (value))) + { + g_value_set_enum (value, g_value_get_uint (variant_value)); + } + else + { + g_value_copy (variant_value, value); + } + } + else + { + g_value_copy (variant_value, value); + } } } else |