st/viewport: Don't trigger relayout when picking
Calling clutter_actor_get_allocation_box() might still implicitly trigger a full relayout, which has many side effects not expected to occur during picking. Avoid a particular case which caused a reentry issue by using the current allocation instead of forcing a relayout when picking in StViewport. Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1436 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1527>
This commit is contained in:
parent
d263f5731c
commit
4e57119f40
@ -431,7 +431,7 @@ st_viewport_pick (ClutterActor *actor,
|
||||
StViewportPrivate *priv = st_viewport_get_instance_private (viewport);
|
||||
StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (actor));
|
||||
double x, y;
|
||||
ClutterActorBox allocation_box;
|
||||
g_autoptr (ClutterActorBox) allocation_box = NULL;
|
||||
ClutterActorBox content_box;
|
||||
ClutterActor *child;
|
||||
|
||||
@ -440,8 +440,8 @@ st_viewport_pick (ClutterActor *actor,
|
||||
if (clutter_actor_get_n_children (actor) == 0)
|
||||
return;
|
||||
|
||||
clutter_actor_get_allocation_box (actor, &allocation_box);
|
||||
st_theme_node_get_content_box (theme_node, &allocation_box, &content_box);
|
||||
g_object_get (actor, "allocation", &allocation_box, NULL);
|
||||
st_theme_node_get_content_box (theme_node, allocation_box, &content_box);
|
||||
|
||||
get_border_paint_offsets (viewport, &x, &y);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user