summaryrefslogtreecommitdiff
path: root/platform/windows
diff options
context:
space:
mode:
authorbruvzg <7645683+bruvzg@users.noreply.github.com>2023-02-14 09:05:58 +0200
committerbruvzg <7645683+bruvzg@users.noreply.github.com>2023-02-14 09:05:58 +0200
commita322f3f5782252d6bec8f169cd6a93cbc7b47921 (patch)
tree9eef499f1c0bcb23004f0831833592b5604f83be /platform/windows
parent381590311958ab00251639af6d7efc6934dd3c72 (diff)
[InputEventKey] Avoid setting both key and modifier to the same value.
Diffstat (limited to 'platform/windows')
-rw-r--r--platform/windows/display_server_windows.cpp33
1 files changed, 24 insertions, 9 deletions
diff --git a/platform/windows/display_server_windows.cpp b/platform/windows/display_server_windows.cpp
index fe7d91dc18..1cfc9c9f47 100644
--- a/platform/windows/display_server_windows.cpp
+++ b/platform/windows/display_server_windows.cpp
@@ -3668,10 +3668,18 @@ void DisplayServerWindows::_process_key_events() {
}
k->set_window_id(ke.window_id);
- k->set_shift_pressed(ke.shift);
- k->set_alt_pressed(ke.alt);
- k->set_ctrl_pressed(ke.control);
- k->set_meta_pressed(ke.meta);
+ if (keycode != Key::SHIFT) {
+ k->set_shift_pressed(ke.shift);
+ }
+ if (keycode != Key::ALT) {
+ k->set_alt_pressed(ke.alt);
+ }
+ if (keycode != Key::CTRL) {
+ k->set_ctrl_pressed(ke.control);
+ }
+ if (keycode != Key::META) {
+ k->set_meta_pressed(ke.meta);
+ }
k->set_pressed(true);
k->set_keycode(keycode);
k->set_physical_keycode(physical_keycode);
@@ -3693,11 +3701,6 @@ void DisplayServerWindows::_process_key_events() {
k.instantiate();
k->set_window_id(ke.window_id);
- k->set_shift_pressed(ke.shift);
- k->set_alt_pressed(ke.alt);
- k->set_ctrl_pressed(ke.control);
- k->set_meta_pressed(ke.meta);
-
k->set_pressed(ke.uMsg == WM_KEYDOWN);
Key keycode = KeyMappingWindows::get_keysym(ke.wParam);
@@ -3719,6 +3722,18 @@ void DisplayServerWindows::_process_key_events() {
}
}
+ if (keycode != Key::SHIFT) {
+ k->set_shift_pressed(ke.shift);
+ }
+ if (keycode != Key::ALT) {
+ k->set_alt_pressed(ke.alt);
+ }
+ if (keycode != Key::CTRL) {
+ k->set_ctrl_pressed(ke.control);
+ }
+ if (keycode != Key::META) {
+ k->set_meta_pressed(ke.meta);
+ }
k->set_keycode(keycode);
k->set_physical_keycode(physical_keycode);
k->set_key_label(key_label);