clutter/actor: Alway call queue_relayout() when showing actors

clutter_actor_queue_relayout() detects whether a parent has the
NO_LAYOUT flag set by itself and then queues a shallow relayout for us.
There's no need to duplicate that logic when showing actors, so simply
call clutter_actor_queue_relayout() and let that handle it.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1366
This commit is contained in:
Jonas Dreßler 2020-07-02 18:41:43 +02:00 committed by Carlos Garnacho
parent 345976192d
commit 734a7cc16f

View File

@ -1798,29 +1798,13 @@ clutter_actor_real_show (ClutterActor *self)
*/ */
clutter_actor_update_map_state (self, MAP_STATE_CHECK); clutter_actor_update_map_state (self, MAP_STATE_CHECK);
/* we queue a relayout unless the actor is inside a /* Avoid the early return in clutter_actor_queue_relayout() */
* container that explicitly told us not to
*/
if (priv->parent != NULL &&
(!(priv->parent->flags & CLUTTER_ACTOR_NO_LAYOUT)))
{
/* While an actor is hidden the parent may not have
* allocated/requested so we need to start from scratch
* and avoid the short-circuiting in
* clutter_actor_queue_relayout().
*/
priv->needs_width_request = FALSE; priv->needs_width_request = FALSE;
priv->needs_height_request = FALSE; priv->needs_height_request = FALSE;
priv->needs_allocation = FALSE; priv->needs_allocation = FALSE;
clutter_actor_queue_relayout (self); clutter_actor_queue_relayout (self);
} }
else /* but still don't leave the actor un-allocated before showing it */
{
clutter_actor_queue_shallow_relayout (self);
clutter_actor_queue_redraw (self);
}
}
static inline void static inline void
set_show_on_set_parent (ClutterActor *self, set_show_on_set_parent (ClutterActor *self,