diff options
author | 2023-09-18 14:38:54 +0200 | |
---|---|---|
committer | 2023-09-18 14:38:54 +0200 | |
commit | 8446fe6de52fa68077d23d39f728f79a29b52f00 (patch) | |
tree | 937c0c1817afb1ab6cc95499f253938549cda68b /widget/src/text_editor.rs | |
parent | 61ef8f3249218b301d434d04c483ba70562c1df4 (diff) | |
download | iced-8446fe6de52fa68077d23d39f728f79a29b52f00.tar.gz iced-8446fe6de52fa68077d23d39f728f79a29b52f00.tar.bz2 iced-8446fe6de52fa68077d23d39f728f79a29b52f00.zip |
Implement theme selector in `editor` example
Diffstat (limited to 'widget/src/text_editor.rs')
-rw-r--r-- | widget/src/text_editor.rs | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/widget/src/text_editor.rs b/widget/src/text_editor.rs index c30e185f..0cde2c98 100644 --- a/widget/src/text_editor.rs +++ b/widget/src/text_editor.rs @@ -193,11 +193,12 @@ where } } -struct State<Highlighter> { +struct State<Highlighter: text::Highlighter> { is_focused: bool, last_click: Option<mouse::Click>, drag_click: Option<mouse::click::Kind>, highlighter: RefCell<Highlighter>, + highlighter_settings: Highlighter::Settings, } impl<'a, Highlighter, Message, Renderer> Widget<Message, Renderer> @@ -220,6 +221,7 @@ where highlighter: RefCell::new(Highlighter::new( &self.highlighter_settings, )), + highlighter_settings: self.highlighter_settings.clone(), }) } @@ -240,6 +242,15 @@ where let mut internal = self.content.0.borrow_mut(); let state = tree.state.downcast_mut::<State<Highlighter>>(); + if state.highlighter_settings != self.highlighter_settings { + state + .highlighter + .borrow_mut() + .update(&self.highlighter_settings); + + state.highlighter_settings = self.highlighter_settings.clone(); + } + internal.editor.update( limits.pad(self.padding).max(), self.font.unwrap_or_else(|| renderer.default_font()), |