diff --git a/CodeEdit/Features/Documents/Controllers/CodeEditWindowController.swift b/CodeEdit/Features/Documents/Controllers/CodeEditWindowController.swift index f86fee6415..c3ee61af47 100644 --- a/CodeEdit/Features/Documents/Controllers/CodeEditWindowController.swift +++ b/CodeEdit/Features/Documents/Controllers/CodeEditWindowController.swift @@ -14,6 +14,8 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs @Published var inspectorCollapsed = false @Published var toolbarCollapsed = false + private var panelOpen = false + var observers: [NSKeyValueObservation] = [] var workspace: WorkspaceDocument? @@ -109,20 +111,26 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs if let commandPalettePanel { if commandPalettePanel.isKeyWindow { commandPalettePanel.close() + self.panelOpen = false state.reset() return } else { state.reset() window?.addChildWindow(commandPalettePanel, ordered: .above) commandPalettePanel.makeKeyAndOrderFront(self) + self.panelOpen = true } } else { let panel = SearchPanel() self.commandPalettePanel = panel - let contentView = QuickActionsView(state: state, closePalette: panel.close) + let contentView = QuickActionsView(state: state) { + panel.close() + self.panelOpen = false + } panel.contentView = NSHostingView(rootView: SettingsInjector { contentView }) window?.addChildWindow(panel, ordered: .above) panel.makeKeyAndOrderFront(self) + self.panelOpen = true } } } @@ -132,10 +140,12 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs if let quickOpenPanel { if quickOpenPanel.isKeyWindow { quickOpenPanel.close() + self.panelOpen = false return } else { window?.addChildWindow(quickOpenPanel, ordered: .above) quickOpenPanel.makeKeyAndOrderFront(self) + self.panelOpen = true } } else { let panel = SearchPanel() @@ -143,6 +153,7 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs let contentView = OpenQuicklyView(state: state) { panel.close() + self.panelOpen = false } openFile: { file in workspace.editorManager?.openTab(item: file) }.environmentObject(workspace) @@ -150,11 +161,13 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs panel.contentView = NSHostingView(rootView: SettingsInjector { contentView }) window?.addChildWindow(panel, ordered: .above) panel.makeKeyAndOrderFront(self) + self.panelOpen = true } } } @IBAction func closeCurrentTab(_ sender: Any) { + if self.panelOpen { return } if (workspace?.editorManager?.activeEditor.tabs ?? []).isEmpty { self.closeActiveEditor(self) } else { diff --git a/CodeEdit/Features/Settings/SettingsView.swift b/CodeEdit/Features/Settings/SettingsView.swift index 58c7c15eda..d7e7ef766e 100644 --- a/CodeEdit/Features/Settings/SettingsView.swift +++ b/CodeEdit/Features/Settings/SettingsView.swift @@ -144,6 +144,10 @@ struct SettingsView: View { var body: some View { NavigationSplitView { + List { } + .searchable(text: $searchText, placement: .sidebar, prompt: "Search") + .scrollDisabled(true) + .frame(height: 30) List(selection: $selectedPage) { Section { ForEach(Self.pages) { pageAndSettings in @@ -151,7 +155,6 @@ struct SettingsView: View { } } } - .searchable(text: $searchText, placement: .sidebar, prompt: "Search") .navigationSplitViewColumnWidth(215) } detail: { Group {