summaryrefslogtreecommitdiffstats
path: root/widget
diff options
context:
space:
mode:
authorLibravatar Héctor <hector@hecrj.dev>2024-10-02 17:21:22 +0200
committerLibravatar GitHub <noreply@github.com>2024-10-02 17:21:22 +0200
commitd5f278b31de1ba2d3df6cc8e1e617649e1f21869 (patch)
treeed73bb9cc0b64a862ea7ab764f8bff31ef23b630 /widget
parent5ee82b2ef0dc6ec1dfec1827b6687cdacf871ce2 (diff)
parentd40aa6400d7e8692516c2651687790a00deb727e (diff)
downloadiced-d5f278b31de1ba2d3df6cc8e1e617649e1f21869.tar.gz
iced-d5f278b31de1ba2d3df6cc8e1e617649e1f21869.tar.bz2
iced-d5f278b31de1ba2d3df6cc8e1e617649e1f21869.zip
Merge pull request #2611 from tarkah/fix/ignore-out-of-viewport-text
Don't fill out of viewport text
Diffstat (limited to 'widget')
-rw-r--r--widget/src/column.rs19
-rw-r--r--widget/src/row.rs19
2 files changed, 16 insertions, 22 deletions
diff --git a/widget/src/column.rs b/widget/src/column.rs
index fc4653b9..213f68fc 100644
--- a/widget/src/column.rs
+++ b/widget/src/column.rs
@@ -320,24 +320,21 @@ where
viewport: &Rectangle,
) {
if let Some(clipped_viewport) = layout.bounds().intersection(viewport) {
+ let viewport = if self.clip {
+ &clipped_viewport
+ } else {
+ viewport
+ };
+
for ((child, state), layout) in self
.children
.iter()
.zip(&tree.children)
.zip(layout.children())
+ .filter(|(_, layout)| layout.bounds().intersects(viewport))
{
child.as_widget().draw(
- state,
- renderer,
- theme,
- style,
- layout,
- cursor,
- if self.clip {
- &clipped_viewport
- } else {
- viewport
- },
+ state, renderer, theme, style, layout, cursor, viewport,
);
}
}
diff --git a/widget/src/row.rs b/widget/src/row.rs
index 75d5fb40..9c0fa97e 100644
--- a/widget/src/row.rs
+++ b/widget/src/row.rs
@@ -316,24 +316,21 @@ where
viewport: &Rectangle,
) {
if let Some(clipped_viewport) = layout.bounds().intersection(viewport) {
+ let viewport = if self.clip {
+ &clipped_viewport
+ } else {
+ viewport
+ };
+
for ((child, state), layout) in self
.children
.iter()
.zip(&tree.children)
.zip(layout.children())
+ .filter(|(_, layout)| layout.bounds().intersects(viewport))
{
child.as_widget().draw(
- state,
- renderer,
- theme,
- style,
- layout,
- cursor,
- if self.clip {
- &clipped_viewport
- } else {
- viewport
- },
+ state, renderer, theme, style, layout, cursor, viewport,
);
}
}