animator: Improve the key value copy
Use the same code used elsewhere in Clutter when dealing with values that can be copied or transformed.
This commit is contained in:
parent
1ca0c2a6d1
commit
74301da8e7
@ -2115,23 +2115,38 @@ gboolean
|
||||
clutter_animator_key_get_value (const ClutterAnimatorKey *key,
|
||||
GValue *value)
|
||||
{
|
||||
GType gtype;
|
||||
|
||||
g_return_val_if_fail (key != NULL, FALSE);
|
||||
g_return_val_if_fail (value != NULL, FALSE);
|
||||
g_return_val_if_fail (G_VALUE_TYPE (value) != G_TYPE_INVALID, FALSE);
|
||||
|
||||
gtype = G_VALUE_TYPE (&key->value);
|
||||
|
||||
if (g_value_type_compatible (gtype, G_VALUE_TYPE (value)))
|
||||
if (!g_type_is_a (G_VALUE_TYPE (&key->value), G_VALUE_TYPE (value)))
|
||||
{
|
||||
if (g_value_type_compatible (G_VALUE_TYPE (&key->value),
|
||||
G_VALUE_TYPE (value)))
|
||||
{
|
||||
g_value_copy (&key->value, value);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (g_value_type_transformable (gtype, G_VALUE_TYPE (value)))
|
||||
if (g_value_type_transformable (G_VALUE_TYPE (&key->value),
|
||||
G_VALUE_TYPE (value)))
|
||||
{
|
||||
if (g_value_transform (&key->value, value))
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
g_warning ("%s: Unable to convert from %s to %s for the "
|
||||
"property '%s' of object %s in the animator key",
|
||||
G_STRLOC,
|
||||
g_type_name (G_VALUE_TYPE (&key->value)),
|
||||
g_type_name (G_VALUE_TYPE (value)),
|
||||
key->property_name,
|
||||
G_OBJECT_TYPE_NAME (key->object));
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
g_value_copy (&key->value, value);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user