diff --git a/src/video/wayland/SDL_waylandmouse.c b/src/video/wayland/SDL_waylandmouse.c index c9cdf69116..7c54d08970 100644 --- a/src/video/wayland/SDL_waylandmouse.c +++ b/src/video/wayland/SDL_waylandmouse.c @@ -538,7 +538,14 @@ static int Wayland_ShowCursor(SDL_Cursor *cursor) if (!data->shmBuffer.shm_data) { if (input->cursor_shape) { Wayland_SetSystemCursorShape(input, data->system_cursor); + input->cursor_visible = SDL_TRUE; + + if (input->relative_mode_override) { + Wayland_input_disable_relative_pointer(input); + input->relative_mode_override = SDL_FALSE; + } + return 0; } else if (!wayland_get_system_cursor(d, data, &scale)) { return -1; @@ -607,7 +614,7 @@ static int Wayland_WarpMouse(SDL_Window *window, float x, float y) } else if (input->warp_emulation_prohibited) { return SDL_Unsupported(); } else if (!d->relative_mouse_mode) { - Wayland_input_lock_pointer(input, window); + Wayland_input_enable_relative_pointer(input); input->relative_mode_override = SDL_TRUE; }