GNOME Bugzilla – Bug 662634
actor: Unmap an actor before reparenting
Last modified: 2011-10-25 11:07:46 UTC
Special container implementations like St are in cahoots with actors and update special actor properties on the removed/added vfuncs. If we keep the mapped state while the widget isn't on the stage, this will break. -- The shell updates CSS pseudoclasses in the remove/add vfuncs. When we reparent, we're still mapped, even though the widget is on the stage.
Created attachment 199855 [details] [review] actor: Unmap an actor before reparenting Special container implementations like St are in cahoots with actors and update special actor properties on the removed/added vfuncs. If we keep the mapped state while the widget isn't on the stage, this will break.
as documented in the actor invariants, Clutter retains the option to not change the MAPPED state flag during reparenting, to avoid a (potentially costly) state transition from mapped to unmapped to mapped again. I've added more documentation to the CLUTTER_ACTOR_IS_MAPPED macro with this commit: http://git.gnome.org/browse/clutter/commit/?id=81a82867e1cbd0b7a4da0ae518b9b1719974ad60