Selaa lähdekoodia

[rcore] Fix `ShowCursor()`, `HideCursor()` and review `SetMouseCursor()` for `PLATFORM_WEB` (#3647)

* Fix ShowCursor(), HideCursor() and review SetMouseCursor() for PLATFORM_WEB

* Add static to cursorLUT[]

* Re-review SetMouseCursor()
pull/3652/head
ubkp 1 vuosi sitten
committed by GitHub
vanhempi
commit
9fcfc8d64b
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 muutettua tiedostoa jossa 31 lisäystä ja 27 poistoa
  1. +31
    -27
      src/platforms/rcore_web.c

+ 31
- 27
src/platforms/rcore_web.c Näytä tiedosto

@ -83,6 +83,23 @@ extern CoreData CORE; // Global CORE state context
static PlatformData platform = { 0 }; // Platform specific data
//----------------------------------------------------------------------------------
// Local Variables Definition
//----------------------------------------------------------------------------------
static const char cursorLUT[11][12] = {
"default", // 0 MOUSE_CURSOR_DEFAULT
"default", // 1 MOUSE_CURSOR_ARROW
"text", // 2 MOUSE_CURSOR_IBEAM
"crosshair", // 3 MOUSE_CURSOR_CROSSHAIR
"pointer", // 4 MOUSE_CURSOR_POINTING_HAND
"ew-resize", // 5 MOUSE_CURSOR_RESIZE_EW
"ns-resize", // 6 MOUSE_CURSOR_RESIZE_NS
"nwse-resize", // 7 MOUSE_CURSOR_RESIZE_NWSE
"nesw-resize", // 8 MOUSE_CURSOR_RESIZE_NESW
"move", // 9 MOUSE_CURSOR_RESIZE_ALL
"not-allowed" // 10 MOUSE_CURSOR_NOT_ALLOWED
};
//----------------------------------------------------------------------------------
// Module Internal Functions Declaration
//----------------------------------------------------------------------------------
@ -749,13 +766,23 @@ const char *GetClipboardText(void)
// Show mouse cursor
void ShowCursor(void)
{
CORE.Input.Mouse.cursorHidden = false;
if (CORE.Input.Mouse.cursorHidden)
{
EM_ASM( { document.getElementById("canvas").style.cursor = UTF8ToString($0); }, cursorLUT[CORE.Input.Mouse.cursor]);
CORE.Input.Mouse.cursorHidden = false;
}
}
// Hides mouse cursor
void HideCursor(void)
{
CORE.Input.Mouse.cursorHidden = true;
if (!CORE.Input.Mouse.cursorHidden)
{
EM_ASM(document.getElementById('canvas').style.cursor = 'none';);
CORE.Input.Mouse.cursorHidden = true;
}
}
// Enables cursor (unlock cursor)
@ -837,32 +864,9 @@ void SetMouseCursor(int cursor)
{
if (CORE.Input.Mouse.cursor != cursor)
{
const char *cursorName = NULL;
CORE.Input.Mouse.cursor = cursor;
if (!CORE.Input.Mouse.cursorHidden) EM_ASM( { document.getElementById('canvas').style.cursor = UTF8ToString($0); }, cursorLUT[cursor]);
switch (cursor)
{
case MOUSE_CURSOR_IBEAM: cursorName = "text"; break;
case MOUSE_CURSOR_CROSSHAIR: cursorName = "crosshair"; break;
case MOUSE_CURSOR_POINTING_HAND: cursorName = "pointer"; break;
case MOUSE_CURSOR_RESIZE_EW: cursorName = "ew-resize"; break;
case MOUSE_CURSOR_RESIZE_NS: cursorName = "ns-resize"; break;
case MOUSE_CURSOR_RESIZE_NWSE: cursorName = "nwse-resize"; break;
case MOUSE_CURSOR_RESIZE_NESW: cursorName = "nesw-resize"; break;
case MOUSE_CURSOR_RESIZE_ALL: cursorName = "move"; break;
case MOUSE_CURSOR_NOT_ALLOWED: cursorName = "not-allowed"; break;
case MOUSE_CURSOR_ARROW: // WARNING: It does not seem t be a specific cursor for arrow
case MOUSE_CURSOR_DEFAULT: cursorName = "default"; break;
default:
{
cursorName = "default";
CORE.Input.Mouse.cursor = MOUSE_CURSOR_DEFAULT;
} break;
}
// Set the cursor element on the canvas CSS
// The canvas is coded to the Id "canvas" on init
EM_ASM({document.getElementById("canvas").style.cursor = UTF8ToString($0);}, cursorName);
CORE.Input.Mouse.cursor = cursor;
}
}

Ladataan…
Peruuta
Tallenna