From ce3ae03beffd7493957c5c231ba1d3b0014a4a56 Mon Sep 17 00:00:00 2001 From: dijunkun Date: Wed, 27 Nov 2024 17:24:45 +0800 Subject: [PATCH] [fix] prevent cursor relocation when stream window resized --- src/single_window/control_window.cpp | 7 ++----- src/single_window/render.cpp | 6 ++++++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/single_window/control_window.cpp b/src/single_window/control_window.cpp index 9c4208b..c7a0a6e 100644 --- a/src/single_window/control_window.cpp +++ b/src/single_window/control_window.cpp @@ -96,11 +96,8 @@ int Render::ControlWindow() { new_cursor_pos_y = new_control_window_pos_y + mouse_diff_control_bar_pos_y_; - if (new_cursor_pos_x < stream_window_width_ && - new_cursor_pos_y < stream_window_height_) { - SDL_WarpMouseInWindow(stream_window_, (int)new_cursor_pos_x, - (int)new_cursor_pos_y); - } + SDL_WarpMouseInWindow(stream_window_, (int)new_cursor_pos_x, + (int)new_cursor_pos_y); } reset_control_bar_pos_ = false; } else if (!reset_control_bar_pos_ && diff --git a/src/single_window/render.cpp b/src/single_window/render.cpp index 9c448aa..b2fac8d 100644 --- a/src/single_window/render.cpp +++ b/src/single_window/render.cpp @@ -908,6 +908,12 @@ int Render::Run() { } else if (event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED && stream_window_created_ && event.window.windowID == SDL_GetWindowID(stream_window_)) { + // to prevent cursor relocation + if (!reset_control_bar_pos_) { + mouse_diff_control_bar_pos_x_ = 0; + mouse_diff_control_bar_pos_y_ = 0; + } + reset_control_bar_pos_ = true; int stream_window_width, stream_window_height; SDL_GetWindowSize(stream_window_, &stream_window_width,