diff options
author | 2024-01-19 20:41:52 +0100 | |
---|---|---|
committer | 2024-01-19 20:41:52 +0100 | |
commit | 1781068e1c3a65551db1e832fdbaddba99124051 (patch) | |
tree | 60e0b3854cc0541712572fbb0e56f14435951ea9 /core/src/widget | |
parent | 41dec5bd203ff5b1574a33a17d5f7358ae1beea2 (diff) | |
parent | 7ae7fcb89855002519bab752fd3686106ce448db (diff) | |
download | iced-1781068e1c3a65551db1e832fdbaddba99124051.tar.gz iced-1781068e1c3a65551db1e832fdbaddba99124051.tar.bz2 iced-1781068e1c3a65551db1e832fdbaddba99124051.zip |
Merge branch 'master' into remove-vertex-indexing
Diffstat (limited to 'core/src/widget')
-rw-r--r-- | core/src/widget/text.rs | 42 | ||||
-rw-r--r-- | core/src/widget/tree.rs | 2 |
2 files changed, 22 insertions, 22 deletions
diff --git a/core/src/widget/text.rs b/core/src/widget/text.rs index ba98f2d8..4cabc7ce 100644 --- a/core/src/widget/text.rs +++ b/core/src/widget/text.rs @@ -5,7 +5,9 @@ use crate::mouse; use crate::renderer; use crate::text::{self, Paragraph}; use crate::widget::tree::{self, Tree}; -use crate::{Color, Element, Layout, Length, Pixels, Point, Rectangle, Widget}; +use crate::{ + Color, Element, Layout, Length, Pixels, Point, Rectangle, Size, Widget, +}; use std::borrow::Cow; @@ -134,12 +136,11 @@ where tree::State::new(State(Renderer::Paragraph::default())) } - fn width(&self) -> Length { - self.width - } - - fn height(&self) -> Length { - self.height + fn size(&self) -> Size<Length> { + Size { + width: self.width, + height: self.height, + } } fn layout( @@ -172,7 +173,7 @@ where style: &renderer::Style, layout: Layout<'_>, _cursor_position: mouse::Cursor, - _viewport: &Rectangle, + viewport: &Rectangle, ) { let state = tree.state.downcast_ref::<State<Renderer::Paragraph>>(); @@ -182,6 +183,7 @@ where layout, state, theme.appearance(self.style.clone()), + viewport, ); } } @@ -204,17 +206,15 @@ pub fn layout<Renderer>( where Renderer: text::Renderer, { - let limits = limits.width(width).height(height); - let bounds = limits.max(); + layout::sized(limits, width, height, |limits| { + let bounds = limits.max(); - let size = size.unwrap_or_else(|| renderer.default_size()); - let font = font.unwrap_or_else(|| renderer.default_font()); + let size = size.unwrap_or_else(|| renderer.default_size()); + let font = font.unwrap_or_else(|| renderer.default_font()); - let State(ref mut paragraph) = state; + let State(ref mut paragraph) = state; - renderer.update_paragraph( - paragraph, - text::Text { + paragraph.update(text::Text { content, bounds, size, @@ -223,12 +223,10 @@ where horizontal_alignment, vertical_alignment, shaping, - }, - ); - - let size = limits.resolve(paragraph.min_bounds()); + }); - layout::Node::new(size) + paragraph.min_bounds() + }) } /// Draws text using the same logic as the [`Text`] widget. @@ -247,6 +245,7 @@ pub fn draw<Renderer>( layout: Layout<'_>, state: &State<Renderer::Paragraph>, appearance: Appearance, + viewport: &Rectangle, ) where Renderer: text::Renderer, { @@ -269,6 +268,7 @@ pub fn draw<Renderer>( paragraph, Point::new(x, y), appearance.color.unwrap_or(style.text_color), + *viewport, ); } diff --git a/core/src/widget/tree.rs b/core/src/widget/tree.rs index d4b8828a..ff52b1ce 100644 --- a/core/src/widget/tree.rs +++ b/core/src/widget/tree.rs @@ -67,7 +67,7 @@ impl Tree { } } - /// Reconciliates the children of the tree with the provided list of widgets. + /// Reconciles the children of the tree with the provided list of widgets. pub fn diff_children<'a, Message, Renderer>( &mut self, new_children: &[impl Borrow<dyn Widget<Message, Renderer> + 'a>], |