st/widget: Include the shadow in the paint volume

Having an inaccurate paint volume didn't matter until ae338af1e8, but
after that having too small a paint volume resulted in apparent clipping.
Not because `clip_to_allocation` is set, but because the offscreen
framebuffer is sized to fit the paint volume only.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1897>
This commit is contained in:
Daniel van Vugt 2021-06-24 19:06:33 +08:00 committed by Marge Bot
parent f51fb4bed0
commit c08c142f95

View File

@ -794,6 +794,16 @@ st_widget_get_paint_volume (ClutterActor *self,
if (!clutter_actor_get_clip_to_allocation (self)) if (!clutter_actor_get_clip_to_allocation (self))
{ {
ClutterActor *child; ClutterActor *child;
StShadow *shadow_spec = st_theme_node_get_text_shadow (theme_node);
if (shadow_spec)
{
ClutterActorBox shadow_box;
st_shadow_get_box (shadow_spec, &alloc_box, &shadow_box);
clutter_paint_volume_union_box (volume, &shadow_box);
}
/* Based on ClutterGroup/ClutterBox; include the children's /* Based on ClutterGroup/ClutterBox; include the children's
* paint volumes, since they may paint outside our allocation. * paint volumes, since they may paint outside our allocation.
*/ */