st/widget: Invalidate paint volume on style changes

StWidget is overriding ClutterActors get_paint_volume() vfunc to adjust
for overpaint of things like box shadows that get set in CSS, it does
that by setting the paint volume to the theme nodes paint box.

Since StWidget can't really get notified when the paint box changes, we
just invalidate the paint volume when the theme nodes paint_equal()
returns FALSE.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1484>
This commit is contained in:
Jonas Dreßler 2021-03-12 22:30:43 +01:00 committed by Marge Bot
parent fab39bbea5
commit 62e40a1350

View File

@ -1722,6 +1722,8 @@ st_widget_recompute_style (StWidget *widget,
if (!paint_equal) if (!paint_equal)
{ {
clutter_actor_invalidate_paint_volume (CLUTTER_ACTOR (widget));
next_paint_state (widget); next_paint_state (widget);
if (!st_theme_node_paint_equal (new_theme_node, current_paint_state (widget)->node)) if (!st_theme_node_paint_equal (new_theme_node, current_paint_state (widget)->node))