mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-10-15 14:26:01 +00:00
hint for which system cursor to use as default
Co-Authored-By: Sam Lantinga <slouken@libsdl.org>
This commit is contained in:
@@ -440,6 +440,19 @@ void SDL_SetDefaultCursor(SDL_Cursor *cursor)
|
||||
}
|
||||
}
|
||||
|
||||
SDL_SystemCursor SDL_GetDefaultSystemCursor(void)
|
||||
{
|
||||
SDL_SystemCursor id = SDL_SYSTEM_CURSOR_DEFAULT;
|
||||
const char *value = SDL_GetHint(SDL_HINT_MOUSE_DEFAULT_SYSTEM_CURSOR);
|
||||
if (value) {
|
||||
int index = SDL_atoi(value);
|
||||
if (0 <= index && index < (int)SDL_SYSTEM_CURSOR_COUNT) {
|
||||
id = (SDL_SystemCursor)index;
|
||||
}
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
SDL_Mouse *SDL_GetMouse(void)
|
||||
{
|
||||
return &SDL_mouse;
|
||||
|
@@ -158,6 +158,9 @@ extern SDL_Mouse *SDL_GetMouse(void);
|
||||
// Set the default mouse cursor
|
||||
extern void SDL_SetDefaultCursor(SDL_Cursor *cursor);
|
||||
|
||||
// Get the preferred default system cursor
|
||||
extern SDL_SystemCursor SDL_GetDefaultSystemCursor(void);
|
||||
|
||||
// Set the mouse focus window
|
||||
extern void SDL_SetMouseFocus(SDL_Window *window);
|
||||
|
||||
|
@@ -75,7 +75,8 @@ static SDL_Cursor *Android_WrapCursor(int custom_cursor, int system_cursor)
|
||||
|
||||
static SDL_Cursor *Android_CreateDefaultCursor(void)
|
||||
{
|
||||
return Android_WrapCursor(0, SDL_SYSTEM_CURSOR_DEFAULT);
|
||||
SDL_SystemCursor id = SDL_GetDefaultSystemCursor();
|
||||
return Android_WrapCursor(0, id);
|
||||
}
|
||||
|
||||
static SDL_Cursor *Android_CreateCursor(SDL_Surface *surface, int hot_x, int hot_y)
|
||||
|
@@ -63,25 +63,6 @@
|
||||
}
|
||||
@end
|
||||
|
||||
static SDL_Cursor *Cocoa_CreateDefaultCursor(void)
|
||||
{
|
||||
@autoreleasepool {
|
||||
NSCursor *nscursor;
|
||||
SDL_Cursor *cursor = NULL;
|
||||
|
||||
nscursor = [NSCursor arrowCursor];
|
||||
|
||||
if (nscursor) {
|
||||
cursor = SDL_calloc(1, sizeof(*cursor));
|
||||
if (cursor) {
|
||||
cursor->internal = (void *)CFBridgingRetain(nscursor);
|
||||
}
|
||||
}
|
||||
|
||||
return cursor;
|
||||
}
|
||||
}
|
||||
|
||||
static SDL_Cursor *Cocoa_CreateCursor(SDL_Surface *surface, int hot_x, int hot_y)
|
||||
{
|
||||
@autoreleasepool {
|
||||
@@ -229,6 +210,12 @@ static SDL_Cursor *Cocoa_CreateSystemCursor(SDL_SystemCursor id)
|
||||
}
|
||||
}
|
||||
|
||||
static SDL_Cursor *Cocoa_CreateDefaultCursor(void)
|
||||
{
|
||||
SDL_SystemCursor id = SDL_GetDefaultSystemCursor();
|
||||
return Cocoa_CreateSystemCursor(id);
|
||||
}
|
||||
|
||||
static void Cocoa_FreeCursor(SDL_Cursor *cursor)
|
||||
{
|
||||
@autoreleasepool {
|
||||
|
@@ -62,7 +62,9 @@ static SDL_Cursor *Emscripten_CreateCursorFromString(const char *cursor_str, boo
|
||||
|
||||
static SDL_Cursor *Emscripten_CreateDefaultCursor(void)
|
||||
{
|
||||
return Emscripten_CreateCursorFromString("default", false);
|
||||
SDL_SystemCursor id = SDL_GetDefaultSystemCursor();
|
||||
const char *cursor_name = SDL_GetCSSCursorName(id, NULL);
|
||||
return Emscripten_CreateCursorFromString(cursor_name, false);
|
||||
}
|
||||
|
||||
EM_JS_DEPS(sdlmouse, "$stringToUTF8,$UTF8ToString");
|
||||
|
@@ -180,7 +180,8 @@ static SDL_Cursor * HAIKU_CreateSystemCursor(SDL_SystemCursor id)
|
||||
|
||||
static SDL_Cursor * HAIKU_CreateDefaultCursor()
|
||||
{
|
||||
return HAIKU_CreateSystemCursor(SDL_SYSTEM_CURSOR_DEFAULT);
|
||||
SDL_SystemCursor id = SDL_GetDefaultSystemCursor();
|
||||
return HAIKU_CreateSystemCursor(id);
|
||||
}
|
||||
|
||||
static void HAIKU_FreeCursor(SDL_Cursor * cursor)
|
||||
|
@@ -592,7 +592,8 @@ static SDL_Cursor *Wayland_CreateSystemCursor(SDL_SystemCursor id)
|
||||
|
||||
static SDL_Cursor *Wayland_CreateDefaultCursor(void)
|
||||
{
|
||||
return Wayland_CreateSystemCursor(SDL_SYSTEM_CURSOR_DEFAULT);
|
||||
SDL_SystemCursor id = SDL_GetDefaultSystemCursor();
|
||||
return Wayland_CreateSystemCursor(id);
|
||||
}
|
||||
|
||||
static void Wayland_FreeCursorData(SDL_CursorData *d)
|
||||
|
@@ -84,11 +84,6 @@ static SDL_Cursor *WIN_CreateCursorAndData(HCURSOR hcursor)
|
||||
return cursor;
|
||||
}
|
||||
|
||||
static SDL_Cursor *WIN_CreateDefaultCursor(void)
|
||||
{
|
||||
return WIN_CreateCursorAndData(LoadCursor(NULL, IDC_ARROW));
|
||||
}
|
||||
|
||||
static bool IsMonochromeSurface(SDL_Surface *surface)
|
||||
{
|
||||
int x, y;
|
||||
@@ -342,6 +337,12 @@ static SDL_Cursor *WIN_CreateSystemCursor(SDL_SystemCursor id)
|
||||
return WIN_CreateCursorAndData(LoadCursor(NULL, name));
|
||||
}
|
||||
|
||||
static SDL_Cursor *WIN_CreateDefaultCursor(void)
|
||||
{
|
||||
SDL_SystemCursor id = SDL_GetDefaultSystemCursor();
|
||||
return WIN_CreateSystemCursor(id);
|
||||
}
|
||||
|
||||
static void WIN_FreeCursor(SDL_Cursor *cursor)
|
||||
{
|
||||
SDL_CursorData *data = cursor->internal;
|
||||
|
@@ -89,12 +89,6 @@ static SDL_Cursor *X11_CreateCursorAndData(Cursor x11_cursor)
|
||||
return cursor;
|
||||
}
|
||||
|
||||
static SDL_Cursor *X11_CreateDefaultCursor(void)
|
||||
{
|
||||
// None is used to indicate the default cursor
|
||||
return X11_CreateCursorAndData(None);
|
||||
}
|
||||
|
||||
#ifdef SDL_VIDEO_DRIVER_X11_XCURSOR
|
||||
static Cursor X11_CreateXCursorCursor(SDL_Surface *surface, int hot_x, int hot_y)
|
||||
{
|
||||
@@ -279,6 +273,12 @@ static SDL_Cursor *X11_CreateSystemCursor(SDL_SystemCursor id)
|
||||
return cursor;
|
||||
}
|
||||
|
||||
static SDL_Cursor *X11_CreateDefaultCursor(void)
|
||||
{
|
||||
SDL_SystemCursor id = SDL_GetDefaultSystemCursor();
|
||||
return X11_CreateSystemCursor(id);
|
||||
}
|
||||
|
||||
static void X11_FreeCursor(SDL_Cursor *cursor)
|
||||
{
|
||||
Cursor x11_cursor = cursor->internal->cursor;
|
||||
|
Reference in New Issue
Block a user