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,6 +375,7 @@ where
cursor: mouse::Cursor, cursor: mouse::Cursor,
viewport: &Rectangle, viewport: &Rectangle,
) { ) {
if let Some(bounds) = layout.bounds().intersection(viewport) {
let mut children = layout.children().zip(&tree.children); let mut children = layout.children().zip(&tree.children);
let (base_layout, base_tree) = children.next().unwrap(); let (base_layout, base_tree) = children.next().unwrap();
@ -389,17 +390,19 @@ where
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,
); );
}); });
} }
} }
}
fn operate( fn operate(
&self, &self,