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