summaryrefslogtreecommitdiffstats
path: root/native
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-04-30 04:34:29 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-04-30 04:34:29 +0200
commite139aae1439d362ada017a05c9554eaae0883888 (patch)
treec502e164587480766f1fa5566db7b48854511269 /native
parentaf95d3972e4ab6bf4ace54ddd44379ffcebbcff6 (diff)
downloadiced-e139aae1439d362ada017a05c9554eaae0883888.tar.gz
iced-e139aae1439d362ada017a05c9554eaae0883888.tar.bz2
iced-e139aae1439d362ada017a05c9554eaae0883888.zip
Split `Input` keyboard event by `ButtonState`
Diffstat (limited to 'native')
-rw-r--r--native/src/input/keyboard/event.rs15
-rw-r--r--native/src/widget/pane_grid.rs26
-rw-r--r--native/src/widget/text_input.rs9
3 files changed, 26 insertions, 24 deletions
diff --git a/native/src/input/keyboard/event.rs b/native/src/input/keyboard/event.rs
index 862f30c4..bc8437a8 100644
--- a/native/src/input/keyboard/event.rs
+++ b/native/src/input/keyboard/event.rs
@@ -1,5 +1,4 @@
use super::{KeyCode, ModifiersState};
-use crate::input::ButtonState;
/// A keyboard event.
///
@@ -9,11 +8,17 @@ use crate::input::ButtonState;
/// [open an issue]: https://github.com/hecrj/iced/issues
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum Event {
- /// A keyboard key was pressed or released.
- Input {
- /// The state of the key
- state: ButtonState,
+ /// A keyboard key was pressed.
+ KeyPressed {
+ /// The key identifier
+ key_code: KeyCode,
+
+ /// The state of the modifier keys
+ modifiers: ModifiersState,
+ },
+ /// A keyboard key was released.
+ KeyReleased {
/// The key identifier
key_code: KeyCode,
diff --git a/native/src/widget/pane_grid.rs b/native/src/widget/pane_grid.rs
index f84775ed..0b735ad3 100644
--- a/native/src/widget/pane_grid.rs
+++ b/native/src/widget/pane_grid.rs
@@ -532,24 +532,19 @@ where
Event::Mouse(mouse::Event::CursorMoved { .. }) => {
self.trigger_resize(layout, cursor_position, messages);
}
- Event::Keyboard(keyboard::Event::Input {
+ Event::Keyboard(keyboard::Event::KeyPressed {
modifiers,
key_code,
- state,
}) => {
if let Some(on_key_press) = &self.on_key_press {
// TODO: Discard when event is captured
- if state == ButtonState::Pressed {
- if let Some(_) = self.state.active_pane() {
- if modifiers.matches(self.modifier_keys) {
- if let Some(message) =
- on_key_press(KeyPressEvent {
- key_code,
- modifiers,
- })
- {
- messages.push(message);
- }
+ if let Some(_) = self.state.active_pane() {
+ if modifiers.matches(self.modifier_keys) {
+ if let Some(message) = on_key_press(KeyPressEvent {
+ key_code,
+ modifiers,
+ }) {
+ messages.push(message);
}
}
}
@@ -557,6 +552,11 @@ where
*self.pressed_modifiers = modifiers;
}
+ Event::Keyboard(keyboard::Event::KeyReleased {
+ modifiers, ..
+ }) => {
+ *self.pressed_modifiers = modifiers;
+ }
_ => {}
}
diff --git a/native/src/widget/text_input.rs b/native/src/widget/text_input.rs
index 7d1a7415..ea6921b5 100644
--- a/native/src/widget/text_input.rs
+++ b/native/src/widget/text_input.rs
@@ -327,9 +327,8 @@ where
let message = (self.on_change)(editor.contents());
messages.push(message);
}
- Event::Keyboard(keyboard::Event::Input {
+ Event::Keyboard(keyboard::Event::KeyPressed {
key_code,
- state: ButtonState::Pressed,
modifiers,
}) if self.state.is_focused => match key_code {
keyboard::KeyCode::Enter => {
@@ -473,10 +472,8 @@ where
}
_ => {}
},
- Event::Keyboard(keyboard::Event::Input {
- key_code,
- state: ButtonState::Released,
- ..
+ Event::Keyboard(keyboard::Event::KeyReleased {
+ key_code, ..
}) => match key_code {
keyboard::KeyCode::V => {
self.state.is_pasting = None;