summaryrefslogtreecommitdiffstats
path: root/widget/src/text_editor.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2023-09-18 14:38:54 +0200
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2023-09-18 14:38:54 +0200
commit8446fe6de52fa68077d23d39f728f79a29b52f00 (patch)
tree937c0c1817afb1ab6cc95499f253938549cda68b /widget/src/text_editor.rs
parent61ef8f3249218b301d434d04c483ba70562c1df4 (diff)
downloadiced-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.rs13
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()),