summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorJonas Dreßler <verdre@v0yd.nl>2020-07-02 22:23:30 +0200
committerJonas Dreßler <verdre@v0yd.nl>2020-10-20 18:22:10 +0200
commitde610a13f1ad1e7e34d4b9a81df58d4da3693059 (patch)
treedc8ba79135769a85d8de249f42285db8c8b8f4cd /src/core
parent76578e5aa0cd75841ce58fbc7e5c2b718c401e8a (diff)
downloadmutter-de610a13f1ad1e7e34d4b9a81df58d4da3693059.tar.gz
clutter/actor: Reset allocation when unrealizing actor
Since commit eb9cd3857d we initialize the allocation of ClutterActors to an UNINITIALIZED ClutterActorBox. We do that to ensure the actor even emits notify::allocation in case it got a new valid allocation of 0,0,0,0. Now there's still the case where an actor gets removed from the scenegraph and added again to a different parent, in this case we still don't emit notify::allocation right now in case the new allocation equals the old one. There's two good reasons to do so though: 1) To Clutter, there's no difference between a newly created actor and an actor which got removed from the scenegraph, it's not consistent to always notify the allocation property in the former situation, but not always notify it in the latter situation. 2) When an allocation changes, Clutter notifies the subtree of that actor about an absolute geometry change (see the call to transform_changed() in clutter_actor_set_allocation_internal()). Now when an actor gets reparented, obviously the absolute geometry might change, so to make sure transform_changed() is always called in that case we need to make sure an allocation change happens. So simply reset the allocation property of the actor to an UNINITIALIZED ClutterActorBox as soon as it gets unrealized. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1498
Diffstat (limited to 'src/core')
0 files changed, 0 insertions, 0 deletions