actor: Make Actor.add_child and Container.add_actor idempotent
authorEmmanuele Bassi <ebassi@linux.intel.com>
Fri, 2 Dec 2011 11:51:15 +0000 (11:51 +0000)
committerEmmanuele Bassi <ebassi@gnome.org>
Mon, 16 Jan 2012 23:35:15 +0000 (23:35 +0000)
commitef3dc2d1bac85b958b3bb8cf32d8045978c1a853
tree128334c1c99016a3df79cd430a43c65127d068c0
parent2894587b221352241d8eb5fdb1136d9856c36b3c
actor: Make Actor.add_child and Container.add_actor idempotent

And make sure that overriding Container and calling
clutter_actor_add_child() will result in the same sequence of operations
as the current set_parent()+queue_relayout()+signal_emit pattern.

Existing containers can continue using:

        clutter_actor_set_parent (child, CLUTTER_ACTOR (container));
        clutter_actor_queue_relayout (CLUTTER_ACTOR (container));
        g_signal_emit_by_name (container, "actor-added", child);

and newly written containers overriding Container.add() can simply call:

        clutter_actor_add_child (CLUTTER_ACTOR (container), child);

instead.
clutter/clutter-actor.c
tests/conform/test-actor-layout.c