|
@@ -21,6 +21,7 @@
|
|
|
|
|
|
// CHANGELOG
|
|
// CHANGELOG
|
|
// (minor and older changes stripped away, please see git history for details)
|
|
// (minor and older changes stripped away, please see git history for details)
|
|
|
|
+// 2025-02-24: Avoid calling SDL_GetGlobalMouseState() when mouse is in relative mode.
|
|
// 2025-02-18: Added ImGuiMouseCursor_Wait and ImGuiMouseCursor_Progress mouse cursor support.
|
|
// 2025-02-18: Added ImGuiMouseCursor_Wait and ImGuiMouseCursor_Progress mouse cursor support.
|
|
// 2025-02-10: Using SDL_OpenURL() in platform_io.Platform_OpenInShellFn handler.
|
|
// 2025-02-10: Using SDL_OpenURL() in platform_io.Platform_OpenInShellFn handler.
|
|
// 2025-01-20: Made ImGui_ImplSDL2_SetGamepadMode(ImGui_ImplSDL2_GamepadMode_Manual) accept an empty array.
|
|
// 2025-01-20: Made ImGui_ImplSDL2_SetGamepadMode(ImGui_ImplSDL2_GamepadMode_Manual) accept an empty array.
|
|
@@ -622,8 +623,10 @@ static void ImGui_ImplSDL2_UpdateMouseData()
|
|
SDL_WarpMouseInWindow(bd->Window, (int)io.MousePos.x, (int)io.MousePos.y);
|
|
SDL_WarpMouseInWindow(bd->Window, (int)io.MousePos.x, (int)io.MousePos.y);
|
|
|
|
|
|
// (Optional) Fallback to provide mouse position when focused (SDL_MOUSEMOTION already provides this when hovered or captured)
|
|
// (Optional) Fallback to provide mouse position when focused (SDL_MOUSEMOTION already provides this when hovered or captured)
|
|
- if (bd->MouseCanUseGlobalState && bd->MouseButtonsDown == 0)
|
|
|
|
|
|
+ const bool is_relative_mouse_mode = SDL_GetRelativeMouseMode() != 0;
|
|
|
|
+ if (bd->MouseCanUseGlobalState && bd->MouseButtonsDown == 0 && !is_relative_mouse_mode)
|
|
{
|
|
{
|
|
|
|
+ // Single-viewport mode: mouse position in client window coordinates (io.MousePos is (0,0) when the mouse is on the upper-left corner of the app window)
|
|
int window_x, window_y, mouse_x_global, mouse_y_global;
|
|
int window_x, window_y, mouse_x_global, mouse_y_global;
|
|
SDL_GetGlobalMouseState(&mouse_x_global, &mouse_y_global);
|
|
SDL_GetGlobalMouseState(&mouse_x_global, &mouse_y_global);
|
|
SDL_GetWindowPosition(bd->Window, &window_x, &window_y);
|
|
SDL_GetWindowPosition(bd->Window, &window_x, &window_y);
|