Fix top layer clipping in hover widget

This commit is contained in:
Héctor Ramón Jiménez 2024-04-27 11:21:18 +02:00
parent 95ac45e33d
commit 9c0f2dc9a5
No known key found for this signature in database
GPG key ID: 7CC46565708259A7

View file

@ -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();
let (base_layout, base_tree) = children.next().unwrap();
self.base.as_widget().draw(
base_tree,
renderer,
theme,
style,
base_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();
if cursor.is_over(layout.bounds()) || self.is_top_overlay_active
{
let (top_layout, top_tree) = children.next().unwrap();
renderer.with_layer(layout.bounds(), |renderer| {
self.top.as_widget().draw(
top_tree, renderer, theme, style, top_layout, cursor,
viewport,
);
});
renderer.with_layer(bounds, |renderer| {
self.top.as_widget().draw(
top_tree, renderer, theme, style, top_layout,
cursor, viewport,
);
});
}
}
}