summaryrefslogtreecommitdiffstats
path: root/widget
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2023-12-15 13:15:44 +0100
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2023-12-15 13:39:00 +0100
commite819c2390bad76e811265245bd5fab63fc30a8b2 (patch)
treee19db58cbf4cd5529bd74f1f82764103f59f2236 /widget
parentdd249a1d11c68b8fee1828d58bae158946ee2ebd (diff)
downloadiced-e819c2390bad76e811265245bd5fab63fc30a8b2.tar.gz
iced-e819c2390bad76e811265245bd5fab63fc30a8b2.tar.bz2
iced-e819c2390bad76e811265245bd5fab63fc30a8b2.zip
Update `winit` to `0.29.4`
Diffstat (limited to 'widget')
-rw-r--r--widget/src/canvas/event.rs2
-rw-r--r--widget/src/shader/event.rs2
-rw-r--r--widget/src/text_editor.rs12
-rw-r--r--widget/src/text_input.rs56
4 files changed, 37 insertions, 35 deletions
diff --git a/widget/src/canvas/event.rs b/widget/src/canvas/event.rs
index 1288365f..a8eb47f7 100644
--- a/widget/src/canvas/event.rs
+++ b/widget/src/canvas/event.rs
@@ -8,7 +8,7 @@ pub use crate::core::event::Status;
/// A [`Canvas`] event.
///
/// [`Canvas`]: crate::Canvas
-#[derive(Debug, Clone, Copy, PartialEq)]
+#[derive(Debug, Clone, PartialEq)]
pub enum Event {
/// A mouse event.
Mouse(mouse::Event),
diff --git a/widget/src/shader/event.rs b/widget/src/shader/event.rs
index 1cc484fb..005c8725 100644
--- a/widget/src/shader/event.rs
+++ b/widget/src/shader/event.rs
@@ -9,7 +9,7 @@ pub use crate::core::event::Status;
/// A [`Shader`] event.
///
/// [`Shader`]: crate::Shader
-#[derive(Debug, Clone, Copy, PartialEq)]
+#[derive(Debug, Clone, PartialEq)]
pub enum Event {
/// A mouse event.
Mouse(mouse::Event),
diff --git a/widget/src/text_editor.rs b/widget/src/text_editor.rs
index a2a186f0..3c0a1806 100644
--- a/widget/src/text_editor.rs
+++ b/widget/src/text_editor.rs
@@ -649,6 +649,7 @@ impl Update {
keyboard::Event::KeyPressed {
key_code,
modifiers,
+ text,
} if state.is_focused => {
if let Some(motion) = motion(key_code) {
let motion =
@@ -678,12 +679,15 @@ impl Update {
{
Some(Self::Paste)
}
- _ => None,
+ _ => {
+ let text = text?;
+
+ edit(Edit::Insert(
+ text.chars().next().unwrap_or_default(),
+ ))
+ }
}
}
- keyboard::Event::CharacterReceived(c) if state.is_focused => {
- edit(Edit::Insert(c))
- }
_ => None,
},
_ => None,
diff --git a/widget/src/text_input.rs b/widget/src/text_input.rs
index 65d3e1eb..8ba4bd71 100644
--- a/widget/src/text_input.rs
+++ b/widget/src/text_input.rs
@@ -752,34 +752,9 @@ where
return event::Status::Captured;
}
}
- Event::Keyboard(keyboard::Event::CharacterReceived(c)) => {
- let state = state();
-
- if let Some(focus) = &mut state.is_focused {
- let Some(on_input) = on_input else {
- return event::Status::Ignored;
- };
-
- if state.is_pasting.is_none()
- && !state.keyboard_modifiers.command()
- && !c.is_control()
- {
- let mut editor = Editor::new(value, &mut state.cursor);
-
- editor.insert(c);
-
- let message = (on_input)(editor.contents());
- shell.publish(message);
-
- focus.updated_at = Instant::now();
-
- update_cache(state, value);
-
- return event::Status::Captured;
- }
- }
- }
- Event::Keyboard(keyboard::Event::KeyPressed { key_code, .. }) => {
+ Event::Keyboard(keyboard::Event::KeyPressed {
+ key_code, text, ..
+ }) => {
let state = state();
if let Some(focus) = &mut state.is_focused {
@@ -971,7 +946,30 @@ where
| keyboard::KeyCode::Down => {
return event::Status::Ignored;
}
- _ => {}
+ _ => {
+ if let Some(text) = text {
+ let c = text.chars().next().unwrap_or_default();
+
+ if state.is_pasting.is_none()
+ && !state.keyboard_modifiers.command()
+ && !c.is_control()
+ {
+ let mut editor =
+ Editor::new(value, &mut state.cursor);
+
+ editor.insert(c);
+
+ let message = (on_input)(editor.contents());
+ shell.publish(message);
+
+ focus.updated_at = Instant::now();
+
+ update_cache(state, value);
+
+ return event::Status::Captured;
+ }
+ }
+ }
}
return event::Status::Captured;