Fix clicking on "+" button not working when a tab was underneath
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.
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)
},
);