From 503e7663f8d1c20b842fdfeb46798f0bd80f6757 Mon Sep 17 00:00:00 2001 From: Olivier Fourdan <ofourdan@redhat.com> Date: Thu, 5 May 2022 16:38:53 +0200 Subject: [PATCH] xwayland: do not auto-lock pointer when rootful Xwayland tries to be smart and guess the intention of the X11 clients sometimes, like issuing a pointer lock when a client hides the pointer when confined. While this is a good thing when running rootless, this is problematic when running rootful as the pointer will be automatically locked unless the "retro" mode is used (which doesn't hide the cursor, unlike the default). Make sure we don't trigger the automatic pointer lock when the cursor is hidden when running rootful. Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Adam Jackson <ajax@redhat.com> --- hw/xwayland/xwayland-input.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/xwayland/xwayland-input.c b/hw/xwayland/xwayland-input.c index eda69a1937..177c573033 100644 --- a/hw/xwayland/xwayland-input.c +++ b/hw/xwayland/xwayland-input.c @@ -3202,6 +3202,8 @@ xwl_seat_emulate_pointer_warp(struct xwl_seat *xwl_seat, static Bool xwl_seat_maybe_lock_on_hidden_cursor(struct xwl_seat *xwl_seat) { + struct xwl_screen *xwl_screen = xwl_seat->xwl_screen; + /* Some clients use hidden cursor+confineTo+relative motion * to implement infinite panning (eg. 3D views), lock the * pointer for so the relative pointer is used. @@ -3212,6 +3214,9 @@ xwl_seat_maybe_lock_on_hidden_cursor(struct xwl_seat *xwl_seat) if (!xwl_seat->focus_window) return FALSE; + if (!xwl_screen->rootless) + return FALSE; + if (xwl_seat->cursor_confinement_window != xwl_seat->focus_window) return FALSE; -- GitLab