After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 662634 - actor: Unmap an actor before reparenting
actor: Unmap an actor before reparenting
Status: RESOLVED NOTABUG
Product: clutter
Classification: Platform
Component: general
unspecified
Other All
: Normal normal
: ---
Assigned To: clutter-maint
clutter-maint
Depends on:
Blocks:
 
 
Reported: 2011-10-24 18:33 UTC by Jasper St. Pierre (not reading bugmail)
Modified: 2011-10-25 11:07 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
actor: Unmap an actor before reparenting (1.12 KB, patch)
2011-10-24 18:33 UTC, Jasper St. Pierre (not reading bugmail)
none Details | Review

Description Jasper St. Pierre (not reading bugmail) 2011-10-24 18:33:21 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.
Comment 1 Jasper St. Pierre (not reading bugmail) 2011-10-24 18:33:23 UTC
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.
Comment 2 Emmanuele Bassi (:ebassi) 2011-10-25 11:07:46 UTC
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