From 11ed15cce95c022c18246ab9c669cea75c169675 Mon Sep 17 00:00:00 2001 From: Dongdong Zhou Date: Fri, 1 Sep 2023 21:45:15 +0100 Subject: [PATCH] label reset layout if font changed --- src/view.rs | 16 ++++++++++++++++ src/views/label.rs | 13 +++++++++++++ 2 files changed, 29 insertions(+) diff --git a/src/view.rs b/src/view.rs index 7ea8e750..a4c894bf 100644 --- a/src/view.rs +++ b/src/view.rs @@ -250,6 +250,22 @@ pub trait View { } cx.save(); + let style = cx.app_state_mut().get_computed_style(self.id()).clone(); + if style.font_size.is_some() { + cx.font_size = style.font_size; + } + if style.font_family.is_some() { + cx.font_family = style.font_family; + } + if style.font_weight.is_some() { + cx.font_weight = style.font_weight; + } + if style.font_style.is_some() { + cx.font_style = style.font_style; + } + if style.line_height.is_some() { + cx.line_height = style.line_height; + } let layout = cx .app_state() diff --git a/src/views/label.rs b/src/views/label.rs index 44f24318..e625024b 100644 --- a/src/views/label.rs +++ b/src/views/label.rs @@ -167,6 +167,10 @@ impl View for Label { self.font_style = cx.font_style; self.line_height = cx.line_height; self.text_overflow = text_overflow; + self.text_layout = None; + self.available_text = None; + self.available_width = None; + self.available_text_layout = None; self.set_text_layout(); } if self.text_layout.is_none() { @@ -212,6 +216,15 @@ impl View for Label { return None; } + if self.font_size != cx.font_size + || self.font_family.as_deref() != cx.current_font_family() + || self.font_weight != cx.font_weight + || self.font_style != cx.font_style + || self.line_height != cx.line_height + { + cx.app_state_mut().request_layout(self.id()); + } + let layout = cx.get_layout(self.id()).unwrap(); let style = cx.app_state_mut().get_computed_style(self.id); let text_overflow = style.text_overflow;