From 172fc6bfedeefcb337ccefbf38b427c5be2591cd Mon Sep 17 00:00:00 2001 From: Bastian Winkler Date: Wed, 15 Sep 2010 15:59:39 +0200 Subject: [PATCH] state: Fix the usage of ClutterAnimator in ClutterScript Fix the transition parser to allow transitions that have only an animator and no keys defined. http://bugzilla.clutter-project.org/show_bug.cgi?id=2325 --- clutter/clutter-state.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/clutter/clutter-state.c b/clutter/clutter-state.c index 49f4a187e..2c07b1aea 100644 --- a/clutter/clutter-state.c +++ b/clutter/clutter-state.c @@ -1758,21 +1758,12 @@ parse_state_transition (JsonArray *array, if (!json_object_has_member (object, "source") || !json_object_has_member (object, "target") || - !json_object_has_member (object, "keys")) + !(json_object_has_member (object, "keys") || + json_object_has_member (object, "animator"))) { g_warning ("The transition description at index %d is missing one " - "of the mandatory members: source, target and keys", - index_); - return; - } - - keys = json_object_get_array_member (object, "keys"); - if (keys == NULL) - { - g_warning ("The transition description at index %d has an invalid " - "key member of type '%s' when an array was expected.", - index_, - json_node_type_name (json_object_get_member (object, "keys"))); + "of the mandatory members: source, target and keys or " + "animator", index_); return; } @@ -1809,6 +1800,19 @@ parse_state_transition (JsonArray *array, CLUTTER_ANIMATOR (animator)); } + if (!json_object_has_member (object, "keys")) + return; + + keys = json_object_get_array_member (object, "keys"); + if (keys == NULL && !json_object_has_member (object, "animator")) + { + g_warning ("The transition description at index %d has an invalid " + "key member of type '%s' when an array was expected.", + index_, + json_node_type_name (json_object_get_member (object, "keys"))); + return; + } + if (G_IS_VALUE (clos->value)) valid_keys = g_slist_reverse (g_value_get_pointer (clos->value)); else