From 13a340a30a86bf6fbe124a00b5827fb93414221c Mon Sep 17 00:00:00 2001 From: penguin-sophist <30559935+penguin-sophist@users.noreply.github.com> Date: Sat, 22 Nov 2025 03:00:11 +0100 Subject: [PATCH 1/2] Fix negative delta scroll This fixes the negative delta scroll by correctly allowing for 16-bit to 32-bit sign extension by implicit type promotion. --- src/cascadia/WindowsTerminal/IslandWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cascadia/WindowsTerminal/IslandWindow.cpp b/src/cascadia/WindowsTerminal/IslandWindow.cpp index 55d46abd68c..aedf35fd215 100644 --- a/src/cascadia/WindowsTerminal/IslandWindow.cpp +++ b/src/cascadia/WindowsTerminal/IslandWindow.cpp @@ -624,7 +624,7 @@ void IslandWindow::_OnGetMinMaxInfo(const WPARAM /*wParam*/, const LPARAM lParam const auto scale = GetCurrentDpiScale(); const winrt::Windows::Foundation::Point real{ relative.x / scale, relative.y / scale }; - winrt::Microsoft::Terminal::Core::Point wheelDelta{ 0, static_cast(HIWORD(wparam)) }; + winrt::Microsoft::Terminal::Core::Point wheelDelta{ 0, static_cast(HIWORD(wparam)) }; if (message == WM_MOUSEHWHEEL) { std::swap(wheelDelta.X, wheelDelta.Y); From 90d321e6e32d31a0f5587f142b5487e333025838 Mon Sep 17 00:00:00 2001 From: penguin-sophist <30559935+penguin-sophist@users.noreply.github.com> Date: Tue, 25 Nov 2025 01:26:24 +0100 Subject: [PATCH 2/2] Use std::bit_cast instead of static_cast --- src/cascadia/WindowsTerminal/IslandWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cascadia/WindowsTerminal/IslandWindow.cpp b/src/cascadia/WindowsTerminal/IslandWindow.cpp index aedf35fd215..e627bd44957 100644 --- a/src/cascadia/WindowsTerminal/IslandWindow.cpp +++ b/src/cascadia/WindowsTerminal/IslandWindow.cpp @@ -624,7 +624,7 @@ void IslandWindow::_OnGetMinMaxInfo(const WPARAM /*wParam*/, const LPARAM lParam const auto scale = GetCurrentDpiScale(); const winrt::Windows::Foundation::Point real{ relative.x / scale, relative.y / scale }; - winrt::Microsoft::Terminal::Core::Point wheelDelta{ 0, static_cast(HIWORD(wparam)) }; + winrt::Microsoft::Terminal::Core::Point wheelDelta{ 0, std::bit_cast(HIWORD(wparam)) }; if (message == WM_MOUSEHWHEEL) { std::swap(wheelDelta.X, wheelDelta.Y);