sensors now run in correct order

This commit is contained in:
2025-09-15 21:13:23 -04:00
parent 2700c31c13
commit 90cbc2524a
5 changed files with 129 additions and 32 deletions

View File

@@ -1,6 +1,10 @@
use crate::prelude::*;
use cosmic_text::{Attrs, Cursor, Family, FontSystem, Metrics, Motion, Shaping};
use unicode_segmentation::UnicodeSegmentation;
use winit::{
event::KeyEvent,
keyboard::{Key, NamedKey},
};
pub struct TextEdit {
pub attrs: TextAttrs,
@@ -178,6 +182,41 @@ impl<'a> TextEditCtx<'a> {
pub fn deselect(&mut self) {
self.text.cursor = None;
}
pub fn apply_event(&mut self, event: &KeyEvent) -> TextInputResult {
match &event.logical_key {
Key::Named(named) => match named {
NamedKey::Backspace => self.backspace(),
NamedKey::Delete => self.delete(),
NamedKey::Space => self.insert(" "),
NamedKey::Enter => self.newline(),
NamedKey::ArrowRight => self.motion(Motion::Right),
NamedKey::ArrowLeft => self.motion(Motion::Left),
NamedKey::ArrowUp => self.motion(Motion::Up),
NamedKey::ArrowDown => self.motion(Motion::Down),
NamedKey::Escape => {
self.deselect();
return TextInputResult::Unfocus;
}
_ => return TextInputResult::Unused,
},
Key::Character(text) => self.insert(text),
_ => return TextInputResult::Unused,
}
TextInputResult::Used
}
}
pub enum TextInputResult {
Used,
Unused,
Unfocus,
}
impl TextInputResult {
pub fn unfocus(&self) -> bool {
matches!(self, TextInputResult::Unfocus)
}
}
impl<Ctx> FnOnce<(&mut Ui<Ctx>,)> for TextEditBuilder {