editor: Hide mouse context menu when modal is opened (#29127)

Closes #28787 

The context menu appears before the modal because it is a Deferred
element, which is always displayed above normal elements.

Release Notes:

Previously, the editor context menu appeared before the Command Palette.
This commit ensures the editor context menu is hidden when a modal,
including the Command Palette, is opened.
This commit is contained in:
redforks 2025-04-21 22:43:26 +08:00 committed by GitHub
parent 9a3434efb4
commit 6d2bdc3bac
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 84 additions and 5 deletions

View file

@ -781,6 +781,7 @@ pub enum Event {
language: &'static str,
},
ZoomChanged,
ModalOpened,
}
#[derive(Debug)]
@ -1051,6 +1052,13 @@ impl Workspace {
cx.emit(Event::WorkspaceCreated(weak_handle.clone()));
let modal_layer = cx.new(|_| ModalLayer::new());
let toast_layer = cx.new(|_| ToastLayer::new());
cx.subscribe(
&modal_layer,
|_, _, _: &modal_layer::ModalOpenedEvent, cx| {
cx.emit(Event::ModalOpened);
},
)
.detach();
let bottom_dock_layout = WorkspaceSettings::get_global(cx).bottom_dock_layout;
let left_dock = Dock::new(DockPosition::Left, modal_layer.clone(), window, cx);