diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bc814578..7ba9eae1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -101,7 +101,7 @@ jobs: runs-on: windows-latest env: - SDL_VERSION: 2.24.0 + SDL_VERSION: 2.26.0 steps: - uses: actions/checkout@v1 diff --git a/desktop_version/src/KeyPoll.cpp b/desktop_version/src/KeyPoll.cpp index 44ef3aec..4439d470 100644 --- a/desktop_version/src/KeyPoll.cpp +++ b/desktop_version/src/KeyPoll.cpp @@ -571,8 +571,20 @@ void KeyPoll::Poll(void) SDL_Rect rect; graphics.get_stretch_info(&rect); - mousex = (raw_mousex - rect.x) * SCREEN_WIDTH_PIXELS / rect.w; - mousey = (raw_mousey - rect.y) * SCREEN_HEIGHT_PIXELS / rect.h; + int window_width; + int window_height; + SDL_GetWindowSizeInPixels(gameScreen.m_window, &window_width, &window_height); + + int scaled_window_width; + int scaled_window_height; + SDL_GetWindowSize(gameScreen.m_window, &scaled_window_width, &scaled_window_height); + + float scale_x = (float)window_width / (float)scaled_window_width; + float scale_y = (float)window_height / (float)scaled_window_height; + + // Use screen stretch information to modify the coordinates (as we implement stretching manually) + mousex = ((raw_mousex * scale_x) - rect.x) * SCREEN_WIDTH_PIXELS / rect.w; + mousey = ((raw_mousey * scale_y) - rect.y) * SCREEN_HEIGHT_PIXELS / rect.h; active_input_device_changed = keyboard_was_active != BUTTONGLYPHS_keyboard_is_active(); should_recompute_textboxes |= active_input_device_changed;