Fix a bug where the modal layer could not be dismissed by the mouse
This commit is contained in:
parent
21949bcf1a
commit
0081b816fe
1 changed files with 18 additions and 6 deletions
|
@ -1,4 +1,7 @@
|
||||||
use gpui::{AnyView, DismissEvent, Entity, FocusHandle, Focusable as _, ManagedView, Subscription};
|
use gpui::{
|
||||||
|
AnyView, DismissEvent, Entity, FocusHandle, Focusable as _, ManagedView, MouseButton,
|
||||||
|
Subscription,
|
||||||
|
};
|
||||||
use ui::prelude::*;
|
use ui::prelude::*;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
@ -172,11 +175,13 @@ impl Render for ModalLayer {
|
||||||
let mut background = cx.theme().colors().elevated_surface_background;
|
let mut background = cx.theme().colors().elevated_surface_background;
|
||||||
background.fade_out(0.2);
|
background.fade_out(0.2);
|
||||||
el.bg(background)
|
el.bg(background)
|
||||||
.occlude()
|
|
||||||
.on_mouse_down_out(cx.listener(|this, _, window, cx| {
|
|
||||||
this.hide_modal(window, cx);
|
|
||||||
}))
|
|
||||||
})
|
})
|
||||||
|
.on_mouse_down(
|
||||||
|
MouseButton::Left,
|
||||||
|
cx.listener(|this, _, window, cx| {
|
||||||
|
this.hide_modal(window, cx);
|
||||||
|
}),
|
||||||
|
)
|
||||||
.child(
|
.child(
|
||||||
v_flex()
|
v_flex()
|
||||||
.h(px(0.0))
|
.h(px(0.0))
|
||||||
|
@ -185,7 +190,14 @@ impl Render for ModalLayer {
|
||||||
.flex_col()
|
.flex_col()
|
||||||
.items_center()
|
.items_center()
|
||||||
.track_focus(&active_modal.focus_handle)
|
.track_focus(&active_modal.focus_handle)
|
||||||
.child(h_flex().occlude().child(active_modal.modal.view())),
|
.child(
|
||||||
|
h_flex()
|
||||||
|
.occlude()
|
||||||
|
.child(div().child(active_modal.modal.view()))
|
||||||
|
.on_mouse_down(MouseButton::Left, |_, _, cx| {
|
||||||
|
cx.stop_propagation();
|
||||||
|
}),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue