keymap_ui: Ensure keymap UI opens in local workspace (#34291)
Closes #ISSUE Use `workspace.with_local_workspace` to ensure the keymap UI is opened in a local workspace, even in remote. This was tested by removing the feature flag handling code, as with the feature flag logic the action does not appear which is likely a bug. Release Notes: - N/A *or* Added/Fixed/Improved ...
This commit is contained in:
parent
c09f484ec4
commit
496bf0ec43
1 changed files with 23 additions and 13 deletions
|
@ -71,20 +71,30 @@ pub fn init(cx: &mut App) {
|
||||||
|
|
||||||
cx.on_action(|_: &OpenKeymapEditor, cx| {
|
cx.on_action(|_: &OpenKeymapEditor, cx| {
|
||||||
workspace::with_active_or_new_workspace(cx, move |workspace, window, cx| {
|
workspace::with_active_or_new_workspace(cx, move |workspace, window, cx| {
|
||||||
let existing = workspace
|
workspace
|
||||||
.active_pane()
|
.with_local_workspace(window, cx, |workspace, window, cx| {
|
||||||
.read(cx)
|
let existing = workspace
|
||||||
.items()
|
.active_pane()
|
||||||
.find_map(|item| item.downcast::<KeymapEditor>());
|
.read(cx)
|
||||||
|
.items()
|
||||||
|
.find_map(|item| item.downcast::<KeymapEditor>());
|
||||||
|
|
||||||
if let Some(existing) = existing {
|
if let Some(existing) = existing {
|
||||||
workspace.activate_item(&existing, true, true, window, cx);
|
workspace.activate_item(&existing, true, true, window, cx);
|
||||||
} else {
|
} else {
|
||||||
let keymap_editor =
|
let keymap_editor =
|
||||||
cx.new(|cx| KeymapEditor::new(workspace.weak_handle(), window, cx));
|
cx.new(|cx| KeymapEditor::new(workspace.weak_handle(), window, cx));
|
||||||
workspace.add_item_to_active_pane(Box::new(keymap_editor), None, true, window, cx);
|
workspace.add_item_to_active_pane(
|
||||||
}
|
Box::new(keymap_editor),
|
||||||
});
|
None,
|
||||||
|
true,
|
||||||
|
window,
|
||||||
|
cx,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.detach();
|
||||||
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
cx.observe_new(|_workspace: &mut Workspace, window, cx| {
|
cx.observe_new(|_workspace: &mut Workspace, window, cx| {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue