wayland: Unset pointer constraint in the backend before dropping the grab

Dropping the grab has the side effect that the pointer will be re-picked,
and it might find another surface with a pointer constraint. If that were
the case, the focus change would try to add the pointer constraint before
the now old focus surface released its own.

Just invert these operations, so the constraint is unset before the repick
that might enable another pointer constraint.

Closes: https://gitlab.gnome.org/GNOME/mutter/issues/779
This commit is contained in:
Carlos Garnacho 2019-09-12 19:20:46 +02:00
parent 7735a919d1
commit 107e521553

View File

@ -419,8 +419,8 @@ meta_wayland_pointer_constraint_disable (MetaWaylandPointerConstraint *constrain
{
constraint->is_enabled = FALSE;
meta_wayland_pointer_constraint_notify_deactivated (constraint);
meta_wayland_pointer_end_grab (constraint->grab.pointer);
meta_backend_set_client_pointer_constraint (meta_get_backend (), NULL);
meta_wayland_pointer_end_grab (constraint->grab.pointer);
}
void