summaryrefslogtreecommitdiffstats
path: root/widget/src
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-04-27 11:21:18 +0200
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-04-27 11:21:18 +0200
commit9c0f2dc9a5ea172afd27b13d55dead40098eb7e3 (patch)
tree5a857a830359785803a7541b62ca6a4ccfe1669c /widget/src
parent95ac45e33d8490f0cc5c3cdea80be78f338d44e5 (diff)
downloadiced-9c0f2dc9a5ea172afd27b13d55dead40098eb7e3.tar.gz
iced-9c0f2dc9a5ea172afd27b13d55dead40098eb7e3.tar.bz2
iced-9c0f2dc9a5ea172afd27b13d55dead40098eb7e3.zip
Fix top layer clipping in `hover` widget
Diffstat (limited to 'widget/src')
-rw-r--r--widget/src/helpers.rs45
1 files changed, 24 insertions, 21 deletions
diff --git a/widget/src/helpers.rs b/widget/src/helpers.rs
index 5f27b680..3940e389 100644
--- a/widget/src/helpers.rs
+++ b/widget/src/helpers.rs
@@ -375,29 +375,32 @@ where
cursor: mouse::Cursor,
viewport: &Rectangle,
) {
- let mut children = layout.children().zip(&tree.children);
+ if let Some(bounds) = layout.bounds().intersection(viewport) {
+ let mut children = layout.children().zip(&tree.children);
- let (base_layout, base_tree) = children.next().unwrap();
-
- self.base.as_widget().draw(
- base_tree,
- renderer,
- theme,
- style,
- base_layout,
- cursor,
- viewport,
- );
-
- if cursor.is_over(layout.bounds()) || self.is_top_overlay_active {
- let (top_layout, top_tree) = children.next().unwrap();
+ let (base_layout, base_tree) = children.next().unwrap();
- renderer.with_layer(layout.bounds(), |renderer| {
- self.top.as_widget().draw(
- top_tree, renderer, theme, style, top_layout, cursor,
- viewport,
- );
- });
+ self.base.as_widget().draw(
+ base_tree,
+ renderer,
+ theme,
+ style,
+ base_layout,
+ cursor,
+ viewport,
+ );
+
+ if cursor.is_over(layout.bounds()) || self.is_top_overlay_active
+ {
+ let (top_layout, top_tree) = children.next().unwrap();
+
+ renderer.with_layer(bounds, |renderer| {
+ self.top.as_widget().draw(
+ top_tree, renderer, theme, style, top_layout,
+ cursor, viewport,
+ );
+ });
+ }
}
}