Browse Source

Merge pull request #101763 from SupSuper/patch-1

[Windows] Fix left/right Shift key regression
Thaddeus Crews 7 months ago
parent
commit
8cf94c8de5
1 changed files with 3 additions and 1 deletions
  1. 3 1
      platform/windows/display_server_windows.cpp

+ 3 - 1
platform/windows/display_server_windows.cpp

@@ -4690,7 +4690,9 @@ LRESULT DisplayServerWindows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
 					// If multiple Shifts are held down at the same time,
 					// If multiple Shifts are held down at the same time,
 					// Windows natively only sends a KEYUP for the last one to be released.
 					// Windows natively only sends a KEYUP for the last one to be released.
 					if (raw->data.keyboard.Flags & RI_KEY_BREAK) {
 					if (raw->data.keyboard.Flags & RI_KEY_BREAK) {
-						if (!mods.has_flag(WinKeyModifierMask::SHIFT)) {
+						// Make sure to check the latest key state since
+						// we're in the middle of the message queue.
+						if (GetAsyncKeyState(VK_SHIFT) < 0) {
 							// A Shift is released, but another Shift is still held
 							// A Shift is released, but another Shift is still held
 							ERR_BREAK(key_event_pos >= KEY_EVENT_BUFFER_SIZE);
 							ERR_BREAK(key_event_pos >= KEY_EVENT_BUFFER_SIZE);