diff options
author | 2020-03-17 07:16:54 +0100 | |
---|---|---|
committer | 2020-03-17 07:16:54 +0100 | |
commit | 1cd1582506810255394d2f9019597e9252bd8daa (patch) | |
tree | 8be830e2093a96bf3c538777108256be56499afa /native/src | |
parent | 6f9cf6c70d8ef01446dae4d093c6e8ff2c7e7708 (diff) | |
download | iced-1cd1582506810255394d2f9019597e9252bd8daa.tar.gz iced-1cd1582506810255394d2f9019597e9252bd8daa.tar.bz2 iced-1cd1582506810255394d2f9019597e9252bd8daa.zip |
Add `modifiers` to `KeyPressEvent` in `pane_grid`
Diffstat (limited to 'native/src')
-rw-r--r-- | native/src/widget/pane_grid.rs | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/native/src/widget/pane_grid.rs b/native/src/widget/pane_grid.rs index 8410f95c..5212a147 100644 --- a/native/src/widget/pane_grid.rs +++ b/native/src/widget/pane_grid.rs @@ -28,7 +28,7 @@ pub struct PaneGrid<'a, Message, Renderer> { modifier_keys: keyboard::ModifiersState, on_drag: Option<Box<dyn Fn(DragEvent) -> Message>>, on_resize: Option<Box<dyn Fn(ResizeEvent) -> Message>>, - on_key_press: Option<Box<dyn Fn(keyboard::KeyCode) -> Option<Message>>>, + on_key_press: Option<Box<dyn Fn(KeyPressEvent) -> Option<Message>>>, } impl<'a, Message, Renderer> PaneGrid<'a, Message, Renderer> { @@ -129,7 +129,7 @@ impl<'a, Message, Renderer> PaneGrid<'a, Message, Renderer> { pub fn on_key_press( mut self, - f: impl Fn(keyboard::KeyCode) -> Option<Message> + 'static, + f: impl Fn(KeyPressEvent) -> Option<Message> + 'static, ) -> Self { self.on_key_press = Some(Box::new(f)); self @@ -186,6 +186,12 @@ pub struct ResizeEvent { pub ratio: f32, } +#[derive(Debug, Clone, Copy)] +pub struct KeyPressEvent { + pub key_code: keyboard::KeyCode, + pub modifiers: keyboard::ModifiersState, +} + impl<'a, Message, Renderer> Widget<Message, Renderer> for PaneGrid<'a, Message, Renderer> where @@ -369,7 +375,12 @@ where if state == ButtonState::Pressed { if let Some(_) = self.state.idle_pane() { if modifiers == self.modifier_keys { - if let Some(message) = on_key_press(key_code) { + if let Some(message) = + on_key_press(KeyPressEvent { + key_code, + modifiers, + }) + { messages.push(message); } } |