diff options
| author | 2023-09-09 11:21:32 +0200 | |
|---|---|---|
| committer | 2023-09-09 11:21:32 +0200 | |
| commit | 3450987355be7fe029db112474d06613929b54c7 (patch) | |
| tree | 1d2186d822add1becdd5c942cc6a6c67e5437b57 /graphics/src/renderer.rs | |
| parent | 837529bc995a728300c61fc102474cc31f7a6500 (diff) | |
| download | iced-3450987355be7fe029db112474d06613929b54c7.tar.gz iced-3450987355be7fe029db112474d06613929b54c7.tar.bz2 iced-3450987355be7fe029db112474d06613929b54c7.zip | |
Invalidate existing paragraphs when new fonts are loaded
Diffstat (limited to 'graphics/src/renderer.rs')
| -rw-r--r-- | graphics/src/renderer.rs | 23 | 
1 files changed, 23 insertions, 0 deletions
| diff --git a/graphics/src/renderer.rs b/graphics/src/renderer.rs index f93f4a6d..d4df29a5 100644 --- a/graphics/src/renderer.rs +++ b/graphics/src/renderer.rs @@ -162,6 +162,29 @@ where          text::Paragraph::with_text(text, self.backend.font_system())      } +    fn update_paragraph( +        &self, +        paragraph: &mut Self::Paragraph, +        text: Text<'_, Self::Font>, +    ) { +        let font_system = self.backend.font_system(); + +        if paragraph.version() != font_system.version() { +            // The font system has changed, paragraph fonts may be outdated +            *paragraph = self.create_paragraph(text); +        } else { +            match core::text::compare(paragraph, text) { +                core::text::Difference::None => {} +                core::text::Difference::Bounds => { +                    self.resize_paragraph(paragraph, text.bounds); +                } +                core::text::Difference::Shape => { +                    *paragraph = self.create_paragraph(text); +                } +            } +        } +    } +      fn resize_paragraph(          &self,          paragraph: &mut Self::Paragraph, | 
