summaryrefslogtreecommitdiffstats
path: root/native
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-03-17 07:16:54 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-03-17 07:16:54 +0100
commit1cd1582506810255394d2f9019597e9252bd8daa (patch)
tree8be830e2093a96bf3c538777108256be56499afa /native
parent6f9cf6c70d8ef01446dae4d093c6e8ff2c7e7708 (diff)
downloadiced-1cd1582506810255394d2f9019597e9252bd8daa.tar.gz
iced-1cd1582506810255394d2f9019597e9252bd8daa.tar.bz2
iced-1cd1582506810255394d2f9019597e9252bd8daa.zip
Add `modifiers` to `KeyPressEvent` in `pane_grid`
Diffstat (limited to 'native')
-rw-r--r--native/src/widget/pane_grid.rs17
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);
}
}