Hi (sorry if I've sent this twice, I'm having a bit of trouble with my mail client)
On Tue, 23 Mar 2010 14:00:50 -0500, Uday Verma <uday.ka...@gmail.com> wrote: > I am trying to animate a sub-actor inside a ClutterActor but I can't > seem to be able to do so. > > I have an actor A which contains several Bs, A is not a container but > a regular actor. I have a add method which adds B to A, and in the > process does B.set_parent (A). > > 1. When I do so, right after the parenting operation I set the > position and dimensions of B. The position and dimension requests are > not being regarded and according to --clutter-flags=paint, the > allocation of actor B is {0,0,0,0}. I wonder why that is when I am > explicitly setting the size and position. The only way I could get > the actor B to appear was by explicitly setting the allocation of > actor B to the desired location. Setting the size of an actor just replaces the preferred and minimum sizes that would be returned by get_preferred_with/height. The actor still needs to be allocated to get an actual size. Any actor that has children must implement the allocate method to call allocate on its children. Your allocate method should be something like this (note I don't know Vala so I'm just guessing): public override void allocate (Clutter.Actor actor, Clutter.ActorBox box, Clutter.AllocationFlags flags) { /* Chain up so we still get an allocation (I don't know Vala's syntax for this so I'll use C++) */ actor.ClutterActor::allocate (actor, box, flags); /* Allocate all of the children at their natural size and position */ foreach (var a in children.values) a.allocate_preferred_size (); } You also need to implement paint, pick, map and unmap in a similar way. You can get away without pick if the children don't need to handle events and it will work without map and unmap if you always add actors after the container is mapped (but it's cleaner just to implement them). - Neil -- To unsubscribe send a mail to clutter+unsubscr...@o-hand.com