X11: Sync key press/release with window focus (#1296)

* X11: Sync key press/release with window focus

* When a window loses focus, key release events are issued for all pressed keys
* When a window gains focus, key press events are issued for all pressed keys
* Adds `is_synthetic` field to `WindowEvent` variant `KeyboardInput`
  to indicate that these events are synthetic.
* Adds `is_synthetic: false` to `WindowEvent::KeyboardInput` events issued
  on all other platforms

* Clarify code with comments
This commit is contained in:
Murarth
2019-12-07 15:51:37 -07:00
committed by GitHub
parent 830d47a5f7
commit 35505a3114
10 changed files with 180 additions and 31 deletions

View File

@@ -74,6 +74,7 @@ pub fn init_keyboard(
virtual_keycode: vkcode,
modifiers: modifiers_tracker.lock().unwrap().clone(),
},
is_synthetic: false,
},
})
.unwrap();
@@ -125,6 +126,7 @@ pub fn init_keyboard(
virtual_keycode: vkcode,
modifiers: my_modifiers.lock().unwrap().clone(),
},
is_synthetic: false,
},
})
.unwrap();
@@ -198,6 +200,7 @@ pub fn init_keyboard(
virtual_keycode: None,
modifiers: ModifiersState::default(),
},
is_synthetic: false,
},
})
.unwrap();