From 0ce5cdc48f8cccc316e8be0b4c6803812a1e762c Mon Sep 17 00:00:00 2001 From: Jason Lee Date: Thu, 21 Mar 2024 02:49:36 +0800 Subject: [PATCH] Only allow opening one Extensions view (#9569) Release Notes: - Changed the extensions view to only allow one open instance at a time. ## Before image --- crates/extensions_ui/src/extensions_ui.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/crates/extensions_ui/src/extensions_ui.rs b/crates/extensions_ui/src/extensions_ui.rs index 5d7a7c62cde3bc2e1a2e2d54c195cf09f110d716..9b7d9aaa800e7875ef5429044a87d34c6579e36f 100644 --- a/crates/extensions_ui/src/extensions_ui.rs +++ b/crates/extensions_ui/src/extensions_ui.rs @@ -29,8 +29,18 @@ pub fn init(cx: &mut AppContext) { cx.observe_new_views(move |workspace: &mut Workspace, cx| { workspace .register_action(move |workspace, _: &Extensions, cx| { - let extensions_page = ExtensionsPage::new(workspace, cx); - workspace.add_item_to_active_pane(Box::new(extensions_page), cx) + let existing = workspace + .active_pane() + .read(cx) + .items() + .find_map(|item| item.downcast::()); + + if let Some(existing) = existing { + workspace.activate_item(&existing, cx); + } else { + let extensions_page = ExtensionsPage::new(workspace, cx); + workspace.add_item_to_active_pane(Box::new(extensions_page), cx) + } }) .register_action(move |_, _: &InstallDevExtension, cx| { let store = ExtensionStore::global(cx);