mirror of
https://github.com/zed-industries/zed.git
synced 2024-11-08 07:35:01 +03:00
Fix panel drag leaking through overlay (#10035)
Closes #10017. While reworking the `overlay` element in #9911, I did not realize that all overlay elements called `defer_draw` with a priority of `1`. /cc @as-cii Not including release notes, since it was only present in nightly. Release Notes: - N/A
This commit is contained in:
parent
5602593089
commit
c126fdb616
@ -2773,6 +2773,7 @@ impl Render for CollabPanel {
|
||||
.anchor(gpui::AnchorCorner::TopLeft)
|
||||
.child(menu.clone()),
|
||||
)
|
||||
.with_priority(1)
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
@ -408,11 +408,14 @@ impl PickerDelegate for ChannelModalDelegate {
|
||||
.when(is_me, |el| el.child(Label::new("You").color(Color::Muted)))
|
||||
.children(
|
||||
if let (Some((menu, _)), true) = (&self.context_menu, selected) {
|
||||
Some(deferred(
|
||||
anchored()
|
||||
.anchor(gpui::AnchorCorner::TopRight)
|
||||
.child(menu.clone()),
|
||||
))
|
||||
Some(
|
||||
deferred(
|
||||
anchored()
|
||||
.anchor(gpui::AnchorCorner::TopRight)
|
||||
.child(menu.clone()),
|
||||
)
|
||||
.with_priority(1),
|
||||
)
|
||||
} else {
|
||||
None
|
||||
},
|
||||
|
@ -1812,6 +1812,7 @@ impl EditorElement {
|
||||
.anchor(AnchorCorner::TopLeft)
|
||||
.snap_to_window(),
|
||||
)
|
||||
.with_priority(1)
|
||||
.into_any();
|
||||
|
||||
element.layout(gpui::Point::default(), AvailableSpace::min_size(), cx);
|
||||
|
@ -15,6 +15,16 @@ pub struct Deferred {
|
||||
priority: usize,
|
||||
}
|
||||
|
||||
impl Deferred {
|
||||
/// Sets the `priority` value of the `deferred` element, which
|
||||
/// determines the drawing order relative to other deferred elements,
|
||||
/// with higher values being drawn on top.
|
||||
pub fn with_priority(mut self, priority: usize) -> Self {
|
||||
self.priority = priority;
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
impl Element for Deferred {
|
||||
type BeforeLayout = ();
|
||||
type AfterLayout = ();
|
||||
|
@ -1590,6 +1590,7 @@ impl Render for ProjectPanel {
|
||||
.anchor(gpui::AnchorCorner::TopLeft)
|
||||
.child(menu.clone()),
|
||||
)
|
||||
.with_priority(1)
|
||||
}))
|
||||
} else {
|
||||
v_flex()
|
||||
|
@ -771,6 +771,7 @@ impl Render for TerminalView {
|
||||
.anchor(gpui::AnchorCorner::TopLeft)
|
||||
.child(menu.clone()),
|
||||
)
|
||||
.with_priority(1)
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
@ -182,8 +182,9 @@ impl<M: ManagedView> Element for PopoverMenu<M> {
|
||||
this.resolved_attach().corner(child_bounds) + this.resolved_offset(cx),
|
||||
);
|
||||
}
|
||||
let mut element =
|
||||
deferred(anchored.child(div().occlude().child(menu.clone()))).into_any();
|
||||
let mut element = deferred(anchored.child(div().occlude().child(menu.clone())))
|
||||
.with_priority(1)
|
||||
.into_any();
|
||||
|
||||
menu_layout_id = Some(element.before_layout(cx));
|
||||
element
|
||||
|
@ -110,8 +110,9 @@ impl<M: ManagedView> Element for RightClickMenu<M> {
|
||||
}
|
||||
anchored = anchored.position(*element_state.position.borrow());
|
||||
|
||||
let mut element =
|
||||
deferred(anchored.child(div().occlude().child(menu.clone()))).into_any();
|
||||
let mut element = deferred(anchored.child(div().occlude().child(menu.clone())))
|
||||
.with_priority(1)
|
||||
.into_any();
|
||||
|
||||
menu_layout_id = Some(element.before_layout(cx));
|
||||
element
|
||||
|
@ -1562,16 +1562,14 @@ impl Pane {
|
||||
}
|
||||
|
||||
fn render_menu_overlay(menu: &View<ContextMenu>) -> Div {
|
||||
div()
|
||||
.absolute()
|
||||
.bottom_0()
|
||||
.right_0()
|
||||
.size_0()
|
||||
.child(deferred(
|
||||
div().absolute().bottom_0().right_0().size_0().child(
|
||||
deferred(
|
||||
anchored()
|
||||
.anchor(AnchorCorner::TopRight)
|
||||
.child(menu.clone()),
|
||||
))
|
||||
)
|
||||
.with_priority(1),
|
||||
)
|
||||
}
|
||||
|
||||
pub fn set_zoomed(&mut self, zoomed: bool, cx: &mut ViewContext<Self>) {
|
||||
|
Loading…
Reference in New Issue
Block a user