From e5470cfa70121221fd9e51b085ec0dff259b5865 Mon Sep 17 00:00:00 2001 From: Guilherme Felipe Date: Mon, 3 Sep 2018 09:21:13 -0300 Subject: [PATCH] Fix custom cursor hotspot Cursor hotspot must be inside image on Linux. Adding validation for all platforms for consistency. --- doc/classes/Input.xml | 2 ++ platform/osx/os_osx.mm | 1 + platform/windows/os_windows.cpp | 1 + platform/x11/os_x11.cpp | 1 + 4 files changed, 5 insertions(+) diff --git a/doc/classes/Input.xml b/doc/classes/Input.xml index a4346c1485c..1eb74446c60 100644 --- a/doc/classes/Input.xml +++ b/doc/classes/Input.xml @@ -293,6 +293,8 @@ Set a custom mouse cursor image, which is only visible inside the game window. The hotspot can also be specified. Passing [code]null[/code] to the image parameter resets to the system cursor. See enum [code]CURSOR_*[/code] for the list of shapes. + [code]image[/code]'s size must be lower than 256x256. + [code]hotspot[/code] must be within [code]image[/code]'s size. diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm index 79d7ec410ae..16f1ff8e114 100644 --- a/platform/osx/os_osx.mm +++ b/platform/osx/os_osx.mm @@ -1605,6 +1605,7 @@ void OS_OSX::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, c ERR_FAIL_COND(!texture.is_valid()); ERR_FAIL_COND(texture_size.width > 256 || texture_size.height > 256); + ERR_FAIL_COND(p_hotspot.x > texture_size.width || p_hotspot.y > texture_size.height); image = texture->get_data(); diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index 4ca6f366299..9d5cae00e88 100644 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -2253,6 +2253,7 @@ void OS_Windows::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shap ERR_FAIL_COND(!texture.is_valid()); ERR_FAIL_COND(texture_size.width > 256 || texture_size.height > 256); + ERR_FAIL_COND(p_hotspot.x > texture_size.width || p_hotspot.y > texture_size.height); image = texture->get_data(); diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp index a62bd714d21..606a2371fee 100644 --- a/platform/x11/os_x11.cpp +++ b/platform/x11/os_x11.cpp @@ -2535,6 +2535,7 @@ void OS_X11::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, c ERR_FAIL_COND(!texture.is_valid()); ERR_FAIL_COND(texture_size.width > 256 || texture_size.height > 256); + ERR_FAIL_COND(p_hotspot.x > texture_size.width || p_hotspot.y > texture_size.height); image = texture->get_data();