diff options
author | Campbell Barton <campbell@blender.org> | 2022-06-18 08:02:18 +0300 |
---|---|---|
committer | Campbell Barton <campbell@blender.org> | 2022-06-18 08:06:46 +0300 |
commit | 35b2b9b6e6079902d78602afce10e2e3bb9e6b40 (patch) | |
tree | 09ba588de79eaa77c3eea17bb60d4e6d2c62b371 /source/blender/windowmanager/intern/wm_draw.c | |
parent | 5c814e75f2e866b31834e03f37a5918b021a1c1d (diff) |
Fix T98793: Wayland clamps cursor movement fails with gnome-shell
The current gnome-shell (v42.2) has a bug where grabbing the cursor
doesn't scale the region when confining it to the window.
For Hi-DPI displays this means the cursor may be confined to a quarter
of the window, making grab unusable.
Even though this has been fixed up-stream the issue remains in the
latest release - so workaround the problem by implementing window
confined grab using a software cursor.
This is only used gnome-shell for displays that use Hi-DPI scaling.
Diffstat (limited to 'source/blender/windowmanager/intern/wm_draw.c')
-rw-r--r-- | source/blender/windowmanager/intern/wm_draw.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c index 63a7fb5ddaa..abf7aa65da7 100644 --- a/source/blender/windowmanager/intern/wm_draw.c +++ b/source/blender/windowmanager/intern/wm_draw.c @@ -158,9 +158,13 @@ static bool wm_software_cursor_needed_for_window(const wmWindow *win, struct Gra if (GHOST_GetCursorVisibility(win->ghostwin)) { /* NOTE: The value in `win->grabcursor` can't be used as it * doesn't always match GHOST's value in the case of tablet events. */ - GHOST_GetCursorGrabState( - win->ghostwin, &grab_state->mode, &grab_state->wrap_axis, grab_state->bounds); - if (grab_state->mode == GHOST_kGrabWrap) { + bool use_software_cursor; + GHOST_GetCursorGrabState(win->ghostwin, + &grab_state->mode, + &grab_state->wrap_axis, + grab_state->bounds, + &use_software_cursor); + if (use_software_cursor) { return true; } } |