Ray 4 years ago
parent
commit
f12db180cd
3 changed files with 20 additions and 57 deletions
  1. 1 4
      examples/text/text_input_box.c
  2. 6 34
      src/core.c
  3. 13 19
      src/raylib.h

+ 1 - 4
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;

+ 6 - 34
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
 }

+ 13 - 19
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)