Fix clicking on "+" button not working when a tab was underneath (#3755)
Antonio Scandurra
created 2 years ago
We were mistakenly pushing an opaque layer without intersecting it with
the content mask. Also, we were pushing two opaque layers for the same
div unnecessarily.
Release Notes:
- N/A
Change summary
crates/gpui2/src/elements/div.rs | 22 +++++++---------------
1 file changed, 7 insertions(+), 15 deletions(-)
Detailed changes
@@ -1092,19 +1092,19 @@ impl Interactivity {
});
}
+ let interactive_bounds = InteractiveBounds {
+ bounds: bounds.intersect(&cx.content_mask().bounds),
+ stacking_order: cx.stacking_order().clone(),
+ };
+
if self.block_mouse
|| style.background.as_ref().is_some_and(|fill| {
fill.color().is_some_and(|color| !color.is_transparent())
})
{
- cx.add_opaque_layer(bounds)
+ cx.add_opaque_layer(interactive_bounds.bounds);
}
- let interactive_bounds = InteractiveBounds {
- bounds: bounds.intersect(&cx.content_mask().bounds),
- stacking_order: cx.stacking_order().clone(),
- };
-
if !cx.has_active_drag() {
if let Some(mouse_cursor) = style.mouse_cursor {
let mouse_position = &cx.mouse_position();
@@ -1534,15 +1534,7 @@ impl Interactivity {
cx.on_action(action_type, listener)
}
- cx.with_z_index(style.z_index.unwrap_or(0), |cx| {
- if style.background.as_ref().is_some_and(|fill| {
- fill.color().is_some_and(|color| !color.is_transparent())
- }) {
- cx.add_opaque_layer(bounds)
- }
-
- f(&style, scroll_offset.unwrap_or_default(), cx)
- })
+ f(&style, scroll_offset.unwrap_or_default(), cx)
},
);