From b0ee7b2fb99a331ab9c1d4a15b231f4064be5692 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 21 Dec 2023 14:28:06 +0100 Subject: [PATCH] Fix clicking on "+" button not working when a tab was underneath 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. --- crates/gpui2/src/elements/div.rs | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/crates/gpui2/src/elements/div.rs b/crates/gpui2/src/elements/div.rs index 7bda5966f5..e6fc58e872 100644 --- a/crates/gpui2/src/elements/div.rs +++ b/crates/gpui2/src/elements/div.rs @@ -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) }, );