diff --git a/examples/text/text_input_box.c b/examples/text/text_input_box.c index b68f762cf..174c38d6a 100644 --- a/examples/text/text_input_box.c +++ b/examples/text/text_input_box.c @@ -70,10 +70,7 @@ int main(void) if (letterCount < 0) letterCount = 0; } } - else if (GetMouseCursor() != MOUSE_CURSOR_DEFAULT) - { - SetMouseCursor(MOUSE_CURSOR_DEFAULT); - } + else if (GetMouseCursor() != MOUSE_CURSOR_DEFAULT) SetMouseCursor(MOUSE_CURSOR_DEFAULT); if (mouseOnText) framesCounter++; else framesCounter = 0; diff --git a/src/core.c b/src/core.c index 3534caedf..917c8b321 100644 --- a/src/core.c +++ b/src/core.c @@ -423,8 +423,7 @@ typedef struct CoreData { Vector2 offset; // Mouse offset Vector2 scale; // Mouse scaling - MouseCursor cursor; // Tracks current mouse cursor - void* standardCursors[10]; // Opaque pointers to GLFW cursors + int cursor; // Tracks current mouse cursor bool cursorHidden; // Track if cursor is hidden bool cursorOnScreen; // Tracks if cursor is inside client area @@ -756,26 +755,6 @@ void InitWindow(int width, int height, const char *title) #endif #endif -#if defined(PLATFORM_DESKTOP) - // Initialize GLFW's standard cursors - const int shapes[] = { - 0x00036001, // MOUSE_CURSOR_ARROW - 0x00036002, // MOUSE_CURSOR_IBEAM - 0x00036003, // MOUSE_CURSOR_CROSSHAIR - 0x00036004, // MOUSE_CURSOR_POINTING_HAND - 0x00036005, // MOUSE_CURSOR_RESIZE_EW - 0x00036006, // MOUSE_CURSOR_RESIZE_NS - 0x00036007, // MOUSE_CURSOR_RESIZE_NWSE - 0x00036008, // MOUSE_CURSOR_RESIZE_NESW - 0x00036009, // MOUSE_CURSOR_RESIZE_ALL - 0x0003600A, // MOUSE_CURSOR_NOT_ALLOWED - }; - for (int i = 0; i < sizeof(CORE.Input.Mouse.standardCursors) / sizeof(CORE.Input.Mouse.standardCursors[0]); i += 1) - { - CORE.Input.Mouse.standardCursors[i] = glfwCreateStandardCursor(shapes[i]); - } -#endif - #if defined(PLATFORM_WEB) // Detect fullscreen change events emscripten_set_fullscreenchange_callback("#canvas", NULL, 1, EmscriptenFullscreenChangeCallback); @@ -820,11 +799,6 @@ void CloseWindow(void) rlglClose(); // De-init rlgl -#if defined(PLATFORM_DESKTOP) - for (int i = 0; i < sizeof(CORE.Input.Mouse.standardCursors) / sizeof(CORE.Input.Mouse.standardCursors[0]); i += 1) - glfwDestroyCursor(CORE.Input.Mouse.standardCursors[i]); -#endif - #if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB) glfwDestroyWindow(CORE.Window.handle); glfwTerminate(); @@ -2762,24 +2736,22 @@ float GetMouseWheelMove(void) } // Returns mouse cursor -MouseCursor GetMouseCursor(void) +int GetMouseCursor(void) { return CORE.Input.Mouse.cursor; } // Set mouse cursor // NOTE: This is a no-op on platforms other than PLATFORM_DESKTOP -void SetMouseCursor(MouseCursor cursor) +void SetMouseCursor(int cursor) { #if defined(PLATFORM_DESKTOP) CORE.Input.Mouse.cursor = cursor; - if (cursor == MOUSE_CURSOR_DEFAULT) - { - glfwSetCursor(CORE.Window.handle, NULL); - } + if (cursor == MOUSE_CURSOR_DEFAULT) glfwSetCursor(CORE.Window.handle, NULL); else { - glfwSetCursor(CORE.Window.handle, CORE.Input.Mouse.standardCursors[cursor]); + // NOTE: We are relating internal GLFW enum values to our MouseCursor enum values + glfwSetCursor(CORE.Window.handle, glfwCreateStandardCursor(0x00036000 + cursor)); } #endif } diff --git a/src/raylib.h b/src/raylib.h index bb5a3c473..36a9b63de 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -619,23 +619,17 @@ typedef enum { // Mouse cursor types typedef enum { - MOUSE_CURSOR_DEFAULT = -1, - MOUSE_CURSOR_ARROW = 0, - MOUSE_CURSOR_IBEAM = 1, - MOUSE_CURSOR_CROSSHAIR = 2, - MOUSE_CURSOR_POINTING_HAND = 3, - // The horizontal resize/move arrow shape. - MOUSE_CURSOR_RESIZE_EW = 4, - // The vertical resize/move arrow shape. - MOUSE_CURSOR_RESIZE_NS = 5, - // The top-left to bottom-right diagonal resize/move arrow shape. - MOUSE_CURSOR_RESIZE_NWSE = 6, - // The top-right to bottom-left diagonal resize/move arrow shape. - MOUSE_CURSOR_RESIZE_NESW = 7, - // The omni-directional resize/move cursor shape. - MOUSE_CURSOR_RESIZE_ALL = 8, - // The operation-not-allowed shape. - MOUSE_CURSOR_NOT_ALLOWED = 9 + MOUSE_CURSOR_DEFAULT = 0, + MOUSE_CURSOR_ARROW = 1, + MOUSE_CURSOR_IBEAM = 2, + MOUSE_CURSOR_CROSSHAIR = 3, + MOUSE_CURSOR_POINTING_HAND = 4, + MOUSE_CURSOR_RESIZE_EW = 5, // The horizontal resize/move arrow shape + MOUSE_CURSOR_RESIZE_NS = 6, // The vertical resize/move arrow shape + MOUSE_CURSOR_RESIZE_NWSE = 7, // The top-left to bottom-right diagonal resize/move arrow shape + MOUSE_CURSOR_RESIZE_NESW = 8, // The top-right to bottom-left diagonal resize/move arrow shape + MOUSE_CURSOR_RESIZE_ALL = 9, // The omni-directional resize/move cursor shape + MOUSE_CURSOR_NOT_ALLOWED = 10 // The operation-not-allowed shape } MouseCursor; // Gamepad number @@ -1037,8 +1031,8 @@ RLAPI void SetMousePosition(int x, int y); // Set mouse posit RLAPI void SetMouseOffset(int offsetX, int offsetY); // Set mouse offset RLAPI void SetMouseScale(float scaleX, float scaleY); // Set mouse scaling RLAPI float GetMouseWheelMove(void); // Returns mouse wheel movement Y -RLAPI MouseCursor GetMouseCursor(void); // Returns mouse cursor -RLAPI void SetMouseCursor(MouseCursor cursor); // Set mouse cursor +RLAPI int GetMouseCursor(void); // Returns mouse cursor if (MouseCursor enum) +RLAPI void SetMouseCursor(int cursor); // Set mouse cursor // Input-related functions: touch RLAPI int GetTouchX(void); // Returns touch position X for touch point 0 (relative to screen size)