From 50a0220d2dedd1d93f94e581d6b8ff363b62a130 Mon Sep 17 00:00:00 2001 From: Guilherme Felipe Date: Thu, 10 May 2018 19:17:00 -0300 Subject: [PATCH] Reset the cursor with Input.set_custom_mouse_cursor(null) --- doc/classes/Input.xml | 2 +- platform/osx/os_osx.mm | 5 +++++ platform/windows/os_windows.cpp | 5 +++++ platform/x11/os_x11.cpp | 8 ++++++++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/doc/classes/Input.xml b/doc/classes/Input.xml index f537908625e..58cee7b5563 100644 --- a/doc/classes/Input.xml +++ b/doc/classes/Input.xml @@ -284,7 +284,7 @@ - Set a custom mouse cursor image, which is only visible inside the game window. The hotspot can also be specified. See enum [code]CURSOR_*[/code] for the list of shapes. + 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. diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm index 80d466f4b6d..dbe9a11471d 100644 --- a/platform/osx/os_osx.mm +++ b/platform/osx/os_osx.mm @@ -1594,6 +1594,11 @@ void OS_OSX::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, c if (p_shape == CURSOR_ARROW) { [cursor set]; } + } else { + // Reset to default system cursor + cursors[p_shape] = NULL; + cursor_shape = CURSOR_MAX; + set_cursor_shape(p_shape); } } diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index 2850d38ce4a..d6cdea7b885 100644 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -2117,6 +2117,11 @@ void OS_Windows::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shap if (hXorMask != NULL) { DeleteObject(hXorMask); } + } else { + // Reset to default system cursor + cursors[p_shape] = NULL; + cursor_shape = CURSOR_MAX; + set_cursor_shape(p_shape); } } diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp index 117995ea484..eec371865e5 100644 --- a/platform/x11/os_x11.cpp +++ b/platform/x11/os_x11.cpp @@ -2486,6 +2486,14 @@ void OS_X11::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, c if (p_shape == CURSOR_ARROW) { XDefineCursor(x11_display, x11_window, cursors[p_shape]); } + } else { + // Reset to default system cursor + if (img[p_shape]) { + cursors[p_shape] = XcursorImageLoadCursor(x11_display, img[p_shape]); + } + + current_cursor = CURSOR_MAX; + set_cursor_shape(p_shape); } }