This commit is contained in:
Ray 2020-10-21 11:08:37 +02:00
parent 9833fe45eb
commit f12db180cd
3 changed files with 20 additions and 57 deletions

View file

@ -70,10 +70,7 @@ int main(void)
if (letterCount < 0) letterCount = 0; if (letterCount < 0) letterCount = 0;
} }
} }
else if (GetMouseCursor() != MOUSE_CURSOR_DEFAULT) else if (GetMouseCursor() != MOUSE_CURSOR_DEFAULT) SetMouseCursor(MOUSE_CURSOR_DEFAULT);
{
SetMouseCursor(MOUSE_CURSOR_DEFAULT);
}
if (mouseOnText) framesCounter++; if (mouseOnText) framesCounter++;
else framesCounter = 0; else framesCounter = 0;

View file

@ -423,8 +423,7 @@ typedef struct CoreData {
Vector2 offset; // Mouse offset Vector2 offset; // Mouse offset
Vector2 scale; // Mouse scaling Vector2 scale; // Mouse scaling
MouseCursor cursor; // Tracks current mouse cursor int cursor; // Tracks current mouse cursor
void* standardCursors[10]; // Opaque pointers to GLFW cursors
bool cursorHidden; // Track if cursor is hidden bool cursorHidden; // Track if cursor is hidden
bool cursorOnScreen; // Tracks if cursor is inside client area bool cursorOnScreen; // Tracks if cursor is inside client area
@ -756,26 +755,6 @@ void InitWindow(int width, int height, const char *title)
#endif #endif
#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) #if defined(PLATFORM_WEB)
// Detect fullscreen change events // Detect fullscreen change events
emscripten_set_fullscreenchange_callback("#canvas", NULL, 1, EmscriptenFullscreenChangeCallback); emscripten_set_fullscreenchange_callback("#canvas", NULL, 1, EmscriptenFullscreenChangeCallback);
@ -820,11 +799,6 @@ void CloseWindow(void)
rlglClose(); // De-init rlgl 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) #if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)
glfwDestroyWindow(CORE.Window.handle); glfwDestroyWindow(CORE.Window.handle);
glfwTerminate(); glfwTerminate();
@ -2762,24 +2736,22 @@ float GetMouseWheelMove(void)
} }
// Returns mouse cursor // Returns mouse cursor
MouseCursor GetMouseCursor(void) int GetMouseCursor(void)
{ {
return CORE.Input.Mouse.cursor; return CORE.Input.Mouse.cursor;
} }
// Set mouse cursor // Set mouse cursor
// NOTE: This is a no-op on platforms other than PLATFORM_DESKTOP // NOTE: This is a no-op on platforms other than PLATFORM_DESKTOP
void SetMouseCursor(MouseCursor cursor) void SetMouseCursor(int cursor)
{ {
#if defined(PLATFORM_DESKTOP) #if defined(PLATFORM_DESKTOP)
CORE.Input.Mouse.cursor = cursor; CORE.Input.Mouse.cursor = cursor;
if (cursor == MOUSE_CURSOR_DEFAULT) if (cursor == MOUSE_CURSOR_DEFAULT) glfwSetCursor(CORE.Window.handle, NULL);
{
glfwSetCursor(CORE.Window.handle, NULL);
}
else 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 #endif
} }

View file

@ -619,23 +619,17 @@ typedef enum {
// Mouse cursor types // Mouse cursor types
typedef enum { typedef enum {
MOUSE_CURSOR_DEFAULT = -1, MOUSE_CURSOR_DEFAULT = 0,
MOUSE_CURSOR_ARROW = 0, MOUSE_CURSOR_ARROW = 1,
MOUSE_CURSOR_IBEAM = 1, MOUSE_CURSOR_IBEAM = 2,
MOUSE_CURSOR_CROSSHAIR = 2, MOUSE_CURSOR_CROSSHAIR = 3,
MOUSE_CURSOR_POINTING_HAND = 3, MOUSE_CURSOR_POINTING_HAND = 4,
// The horizontal resize/move arrow shape. MOUSE_CURSOR_RESIZE_EW = 5, // The horizontal resize/move arrow shape
MOUSE_CURSOR_RESIZE_EW = 4, MOUSE_CURSOR_RESIZE_NS = 6, // The vertical resize/move arrow shape
// 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_NS = 5, MOUSE_CURSOR_RESIZE_NESW = 8, // The top-right to bottom-left diagonal resize/move arrow shape
// The top-left to bottom-right diagonal resize/move arrow shape. MOUSE_CURSOR_RESIZE_ALL = 9, // The omni-directional resize/move cursor shape
MOUSE_CURSOR_RESIZE_NWSE = 6, MOUSE_CURSOR_NOT_ALLOWED = 10 // The operation-not-allowed shape
// 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
} MouseCursor; } MouseCursor;
// Gamepad number // 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 SetMouseOffset(int offsetX, int offsetY); // Set mouse offset
RLAPI void SetMouseScale(float scaleX, float scaleY); // Set mouse scaling RLAPI void SetMouseScale(float scaleX, float scaleY); // Set mouse scaling
RLAPI float GetMouseWheelMove(void); // Returns mouse wheel movement Y RLAPI float GetMouseWheelMove(void); // Returns mouse wheel movement Y
RLAPI MouseCursor GetMouseCursor(void); // Returns mouse cursor RLAPI int GetMouseCursor(void); // Returns mouse cursor if (MouseCursor enum)
RLAPI void SetMouseCursor(MouseCursor cursor); // Set mouse cursor RLAPI void SetMouseCursor(int cursor); // Set mouse cursor
// Input-related functions: touch // Input-related functions: touch
RLAPI int GetTouchX(void); // Returns touch position X for touch point 0 (relative to screen size) RLAPI int GetTouchX(void); // Returns touch position X for touch point 0 (relative to screen size)