summaryrefslogtreecommitdiffstats
path: root/native/src
diff options
context:
space:
mode:
authorLibravatar Cory Forsstrom <cforsstrom18@gmail.com>2023-01-17 10:12:51 -0800
committerLibravatar Cory Forsstrom <cforsstrom18@gmail.com>2023-01-17 10:18:39 -0800
commitb2a3a85acb2a0722e90c46b70d574f1d676da9d1 (patch)
treeb0e892439dba8ada5b64d920be3411f325ac2a5d /native/src
parent3c866c15aa1db944a2056f01449a2fbdda2f5abb (diff)
downloadiced-b2a3a85acb2a0722e90c46b70d574f1d676da9d1.tar.gz
iced-b2a3a85acb2a0722e90c46b70d574f1d676da9d1.tar.bz2
iced-b2a3a85acb2a0722e90c46b70d574f1d676da9d1.zip
Use group overlay for containers w/ children
Diffstat (limited to 'native/src')
-rw-r--r--native/src/overlay.rs8
-rw-r--r--native/src/widget/pane_grid.rs13
2 files changed, 13 insertions, 8 deletions
diff --git a/native/src/overlay.rs b/native/src/overlay.rs
index 0b1e8daf..e7394494 100644
--- a/native/src/overlay.rs
+++ b/native/src/overlay.rs
@@ -91,7 +91,7 @@ where
}
}
-/// Obtains the first overlay [`Element`] found in the given children.
+/// Returns a [`Group`] of overlay [`Element`] children.
///
/// This method will generally only be used by advanced users that are
/// implementing the [`Widget`](crate::Widget) trait.
@@ -104,12 +104,14 @@ pub fn from_children<'a, Message, Renderer>(
where
Renderer: crate::Renderer,
{
- children
+ let children = children
.iter_mut()
.zip(&mut tree.children)
.zip(layout.children())
.filter_map(|((child, state), layout)| {
child.as_widget_mut().overlay(state, layout, renderer)
})
- .next()
+ .collect::<Vec<_>>();
+
+ (!children.is_empty()).then(|| Group::with_children(children).overlay())
}
diff --git a/native/src/widget/pane_grid.rs b/native/src/widget/pane_grid.rs
index 8dbd1825..eb04c0ba 100644
--- a/native/src/widget/pane_grid.rs
+++ b/native/src/widget/pane_grid.rs
@@ -35,7 +35,7 @@ pub use iced_style::pane_grid::{Line, StyleSheet};
use crate::event::{self, Event};
use crate::layout;
use crate::mouse;
-use crate::overlay;
+use crate::overlay::{self, Group};
use crate::renderer;
use crate::touch;
use crate::widget;
@@ -450,14 +450,17 @@ where
layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'_, Message, Renderer>> {
- self.contents
+ let children = self
+ .contents
.iter_mut()
.zip(&mut tree.children)
.zip(layout.children())
- .filter_map(|(((_, pane), tree), layout)| {
- pane.overlay(tree, layout, renderer)
+ .filter_map(|(((_, content), state), layout)| {
+ content.overlay(state, layout, renderer)
})
- .next()
+ .collect::<Vec<_>>();
+
+ (!children.is_empty()).then(|| Group::with_children(children).overlay())
}
}