From fd91178d7f9b268299a9c1e99e2be757617c4acf Mon Sep 17 00:00:00 2001
From: Zack Middleton <[EMAIL REDACTED]>
Date: Mon, 20 Nov 2023 21:34:55 -0600
Subject: [PATCH] Make size cursors be double arrows on Wayland
I added fallbacks as they are listed under "to be discussed" in the spec
but I don't know if they're necessary.
https://www.freedesktop.org/wiki/Specifications/cursor-spec/
---
src/video/wayland/SDL_waylandmouse.c | 24 +++++++++++++++++++-----
1 file changed, 19 insertions(+), 5 deletions(-)
diff --git a/src/video/wayland/SDL_waylandmouse.c b/src/video/wayland/SDL_waylandmouse.c
index de209e776c52..7012c2fb1945 100644
--- a/src/video/wayland/SDL_waylandmouse.c
+++ b/src/video/wayland/SDL_waylandmouse.c
@@ -336,19 +336,33 @@ static SDL_bool wayland_get_system_cursor(SDL_VideoData *vdata, Wayland_CursorDa
cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "progress");
break;
case SDL_SYSTEM_CURSOR_SIZENWSE:
- cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "nw-resize");
+ cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "nwse-resize");
+ if (!cursor) {
+ /* only a single arrow */
+ cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "nw-resize");
+ }
break;
case SDL_SYSTEM_CURSOR_SIZENESW:
- cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "ne-resize");
+ cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "nesw-resize");
+ if (!cursor) {
+ /* only a single arrow */
+ cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "ne-resize");
+ }
break;
case SDL_SYSTEM_CURSOR_SIZEWE:
- cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "e-resize");
+ cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "ew-resize");
+ if (!cursor) {
+ cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "col-resize");
+ }
break;
case SDL_SYSTEM_CURSOR_SIZENS:
- cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "n-resize");
+ cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "ns-resize");
+ if (!cursor) {
+ cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "row-resize");
+ }
break;
case SDL_SYSTEM_CURSOR_SIZEALL:
- cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "fleur"); // ?
+ cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "all-scroll");
break;
case SDL_SYSTEM_CURSOR_NO:
cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "not-allowed");