st/viewport: Only extend child allocation when scrolled

When scrolled, the container's allocation is smaller than the allocation
of the content. To account for that, commit 2717ca9d08 added the
additional size reported by the layout manager to the content allocation.

However as it did so unconditionally, we now allow children to extend
outside the parent even when *not* scrolled, which breaks any constraints
set on the container (like "width" or "max-height").

Fix this by only extending the child allocation in scrollable dimensions.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2491
This commit is contained in:
Florian Müllner 2020-06-29 00:16:58 +02:00
parent 6dbcb5f9da
commit 481014ac9e

View File

@ -261,8 +261,10 @@ st_viewport_allocate (ClutterActor *actor,
clutter_actor_set_allocation (actor, box); clutter_actor_set_allocation (actor, box);
content_box = viewport_box; content_box = viewport_box;
content_box.x2 += MAX (0, min_width - avail_width); if (priv->hadjustment)
content_box.y2 += MAX (0, min_height - avail_height); content_box.x2 += MAX (0, min_width - avail_width);
if (priv->vadjustment)
content_box.y2 += MAX (0, min_height - avail_height);
clutter_layout_manager_allocate (layout, CLUTTER_CONTAINER (actor), clutter_layout_manager_allocate (layout, CLUTTER_CONTAINER (actor),
&content_box); &content_box);