diff options
| author | LC <mathew1800@gmail.com> | 2021-01-03 11:26:11 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-01-03 11:26:11 -0500 |
| commit | 4b9259d6913e582156e9d1147ece4fa646709e58 (patch) | |
| tree | 7d7b616d57ac0dcdd50b761c86e401747df3a3d8 /Source/Core/InputCommon/ControllerInterface | |
| parent | f477a10e65febd146746b02b723d62bdfe576342 (diff) | |
| parent | 8813ba69f5594180923cb2e2699ecd270a9cbd71 (diff) | |
Merge pull request #9415 from Filoppi/patch-8
Fix cursor going to +infinite if the window size was 0
Diffstat (limited to 'Source/Core/InputCommon/ControllerInterface')
3 files changed, 7 insertions, 7 deletions
diff --git a/Source/Core/InputCommon/ControllerInterface/DInput/DInputKeyboardMouse.cpp b/Source/Core/InputCommon/ControllerInterface/DInput/DInputKeyboardMouse.cpp index 5aca9f5280..e5e10802cc 100644 --- a/Source/Core/InputCommon/ControllerInterface/DInput/DInputKeyboardMouse.cpp +++ b/Source/Core/InputCommon/ControllerInterface/DInput/DInputKeyboardMouse.cpp @@ -126,9 +126,9 @@ void KeyboardMouse::UpdateCursorInput() RECT rect; GetClientRect(m_hwnd, &rect); - // Width and height are the size of the rendering window. - const auto win_width = rect.right - rect.left; - const auto win_height = rect.bottom - rect.top; + // Width and height are the size of the rendering window. They could be 0 + const auto win_width = std::max(rect.right - rect.left, 1l); + const auto win_height = std::max(rect.bottom - rect.top, 1l); const auto window_scale = g_controller_interface.GetWindowInputScale(); diff --git a/Source/Core/InputCommon/ControllerInterface/Quartz/QuartzKeyboardAndMouse.mm b/Source/Core/InputCommon/ControllerInterface/Quartz/QuartzKeyboardAndMouse.mm index d594ac9e5f..216ae58e6c 100644 --- a/Source/Core/InputCommon/ControllerInterface/Quartz/QuartzKeyboardAndMouse.mm +++ b/Source/Core/InputCommon/ControllerInterface/Quartz/QuartzKeyboardAndMouse.mm @@ -188,8 +188,8 @@ void KeyboardAndMouse::UpdateInput() loc.x -= bounds.origin.x; loc.y -= bounds.origin.y; - m_cursor.x = (loc.x / bounds.size.width * 2 - 1.0) * window_scale.x; - m_cursor.y = (loc.y / bounds.size.height * 2 - 1.0) * window_scale.y; + m_cursor.x = (loc.x / std::max(bounds.size.width, 1.0) * 2 - 1.0) * window_scale.x; + m_cursor.y = (loc.y / std::max(bounds.size.height, 1.0) * 2 - 1.0) * window_scale.y; } std::string KeyboardAndMouse::GetName() const diff --git a/Source/Core/InputCommon/ControllerInterface/Xlib/XInput2.cpp b/Source/Core/InputCommon/ControllerInterface/Xlib/XInput2.cpp index dac0c085fa..a60edc3282 100644 --- a/Source/Core/InputCommon/ControllerInterface/Xlib/XInput2.cpp +++ b/Source/Core/InputCommon/ControllerInterface/Xlib/XInput2.cpp @@ -227,8 +227,8 @@ void KeyboardMouse::UpdateCursor() const auto window_scale = g_controller_interface.GetWindowInputScale(); // the mouse position as a range from -1 to 1 - m_state.cursor.x = (win_x / win_attribs.width * 2 - 1) * window_scale.x; - m_state.cursor.y = (win_y / win_attribs.height * 2 - 1) * window_scale.y; + m_state.cursor.x = (win_x / std::max(win_attribs.width, 1) * 2 - 1) * window_scale.x; + m_state.cursor.y = (win_y / std::max(win_attribs.height, 1) * 2 - 1) * window_scale.y; } void KeyboardMouse::UpdateInput() |
