wayland: Make subsurface actors unreactive early during destruction
When unmapping a subsurface, it does lose early its connection to the
parent surface. This is however a deciding factor in determining whether
the surface (role) has a window.
Make the subsurface actor unreactive if its connection to the parent
MetaWindow was severed, since it should not be eligible for picking anymore.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3729>
(cherry picked from commit 66e23b009c
)
This commit is contained in:
parent
523d716e63
commit
2f4dc03451
1 changed files with 3 additions and 0 deletions
|
@ -412,6 +412,7 @@ permanently_unmap_subsurface (MetaWaylandSurface *surface)
|
||||||
{
|
{
|
||||||
MetaWaylandSubsurfacePlacementOp *op;
|
MetaWaylandSubsurfacePlacementOp *op;
|
||||||
MetaWaylandTransaction *transaction;
|
MetaWaylandTransaction *transaction;
|
||||||
|
MetaSurfaceActor *surface_actor;
|
||||||
|
|
||||||
op = get_subsurface_placement_op (surface, NULL,
|
op = get_subsurface_placement_op (surface, NULL,
|
||||||
META_WAYLAND_SUBSURFACE_PLACEMENT_BELOW);
|
META_WAYLAND_SUBSURFACE_PLACEMENT_BELOW);
|
||||||
|
@ -422,6 +423,8 @@ permanently_unmap_subsurface (MetaWaylandSurface *surface)
|
||||||
meta_wayland_transaction_add_subsurface_position (transaction, surface, 0, 0);
|
meta_wayland_transaction_add_subsurface_position (transaction, surface, 0, 0);
|
||||||
meta_wayland_transaction_commit (transaction);
|
meta_wayland_transaction_commit (transaction);
|
||||||
|
|
||||||
|
surface_actor = meta_wayland_surface_get_actor (surface);
|
||||||
|
clutter_actor_set_reactive (CLUTTER_ACTOR (surface_actor), FALSE);
|
||||||
surface->committed_state.parent = NULL;
|
surface->committed_state.parent = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue