Merge pull request #21973 from guilhermefelipecgs/fix_default_cursor_shape

Some fixes to mouse's cursor and shape
This commit is contained in:
Rémi Verschelde 2018-09-15 11:56:45 +02:00 committed by GitHub
commit 82e69f38ee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 14 additions and 7 deletions

View file

@ -293,7 +293,7 @@
<argument index="2" name="hotspot" type="Vector2" default="Vector2( 0, 0 )"> <argument index="2" name="hotspot" type="Vector2" default="Vector2( 0, 0 )">
</argument> </argument>
<description> <description>
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. Sets 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]image[/code]'s size must be lower than 256x256.
[code]hotspot[/code] must be within [code]image[/code]'s size. [code]hotspot[/code] must be within [code]image[/code]'s size.
</description> </description>
@ -304,6 +304,8 @@
<argument index="0" name="shape" type="int" enum="Input.CursorShape" default="0"> <argument index="0" name="shape" type="int" enum="Input.CursorShape" default="0">
</argument> </argument>
<description> <description>
Sets the default cursor shape to be used in the viewport instead of [code]CURSOR_ARROW[/code].
Note that if you want to change the default cursor shape for [Control]'s nodes, use [member Control.mouse_default_cursor_shape] instead.
</description> </description>
</method> </method>
<method name="set_mouse_mode"> <method name="set_mouse_mode">

View file

@ -1662,7 +1662,7 @@ void OS_OSX::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, c
[cursors[p_shape] release]; [cursors[p_shape] release];
cursors[p_shape] = cursor; cursors[p_shape] = cursor;
if (p_shape == CURSOR_ARROW) { if (p_shape == cursor_shape) {
[cursor set]; [cursor set];
} }
@ -1671,8 +1671,10 @@ void OS_OSX::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, c
} else { } else {
// Reset to default system cursor // Reset to default system cursor
cursors[p_shape] = NULL; cursors[p_shape] = NULL;
CursorShape c = cursor_shape;
cursor_shape = CURSOR_MAX; cursor_shape = CURSOR_MAX;
set_cursor_shape(p_shape); set_cursor_shape(c);
} }
} }

View file

@ -2311,7 +2311,7 @@ void OS_Windows::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shap
cursors[p_shape] = CreateIconIndirect(&iconinfo); cursors[p_shape] = CreateIconIndirect(&iconinfo);
if (p_shape == CURSOR_ARROW) { if (p_shape == cursor_shape) {
SetCursor(cursors[p_shape]); SetCursor(cursors[p_shape]);
} }
@ -2328,8 +2328,10 @@ void OS_Windows::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shap
} else { } else {
// Reset to default system cursor // Reset to default system cursor
cursors[p_shape] = NULL; cursors[p_shape] = NULL;
CursorShape c = cursor_shape;
cursor_shape = CURSOR_MAX; cursor_shape = CURSOR_MAX;
set_cursor_shape(p_shape); set_cursor_shape(c);
} }
} }

View file

@ -2606,7 +2606,7 @@ void OS_X11::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, c
// Save it for a further usage // Save it for a further usage
cursors[p_shape] = XcursorImageLoadCursor(x11_display, cursor_image); cursors[p_shape] = XcursorImageLoadCursor(x11_display, cursor_image);
if (p_shape == CURSOR_ARROW) { if (p_shape == current_cursor) {
XDefineCursor(x11_display, x11_window, cursors[p_shape]); XDefineCursor(x11_display, x11_window, cursors[p_shape]);
} }
@ -2618,8 +2618,9 @@ void OS_X11::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, c
cursors[p_shape] = XcursorImageLoadCursor(x11_display, img[p_shape]); cursors[p_shape] = XcursorImageLoadCursor(x11_display, img[p_shape]);
} }
CursorShape c = current_cursor;
current_cursor = CURSOR_MAX; current_cursor = CURSOR_MAX;
set_cursor_shape(p_shape); set_cursor_shape(c);
} }
} }