diff options
author | 2024-07-18 13:14:56 +0200 | |
---|---|---|
committer | 2024-07-18 13:14:56 +0200 | |
commit | 904704d7c1b006c850654dcf3bf9e856e23cb317 (patch) | |
tree | f26c32d5769a184c72ca3dc4accacd1ac634d915 /widget/src/text_editor.rs | |
parent | 910eb72a0620b34e5b3d7793bbd5ab7290e08dd6 (diff) | |
download | iced-904704d7c1b006c850654dcf3bf9e856e23cb317.tar.gz iced-904704d7c1b006c850654dcf3bf9e856e23cb317.tar.bz2 iced-904704d7c1b006c850654dcf3bf9e856e23cb317.zip |
Flesh out the `markdown` example a bit more
Diffstat (limited to 'widget/src/text_editor.rs')
-rw-r--r-- | widget/src/text_editor.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/widget/src/text_editor.rs b/widget/src/text_editor.rs index 0156b960..e494a3b0 100644 --- a/widget/src/text_editor.rs +++ b/widget/src/text_editor.rs @@ -9,6 +9,7 @@ use crate::core::renderer; use crate::core::text::editor::{Cursor, Editor as _}; use crate::core::text::highlighter::{self, Highlighter}; use crate::core::text::{self, LineHeight}; +use crate::core::widget::operation; use crate::core::widget::{self, Widget}; use crate::core::{ Background, Border, Color, Element, Length, Padding, Pixels, Rectangle, @@ -338,6 +339,22 @@ impl<Highlighter: text::Highlighter> State<Highlighter> { } } +impl<Highlighter: text::Highlighter> operation::Focusable + for State<Highlighter> +{ + fn is_focused(&self) -> bool { + self.is_focused + } + + fn focus(&mut self) { + self.is_focused = true; + } + + fn unfocus(&mut self) { + self.is_focused = false; + } +} + impl<'a, Highlighter, Message, Theme, Renderer> Widget<Message, Theme, Renderer> for TextEditor<'a, Highlighter, Message, Theme, Renderer> where @@ -640,6 +657,18 @@ where mouse::Interaction::default() } } + + fn operate( + &self, + tree: &mut widget::Tree, + _layout: Layout<'_>, + _renderer: &Renderer, + operation: &mut dyn widget::Operation<()>, + ) { + let state = tree.state.downcast_mut::<State<Highlighter>>(); + + operation.focusable(state, None); + } } impl<'a, Highlighter, Message, Theme, Renderer> |