Skip to content

Commit ea2ec6f

Browse files
authored
adding ability to hide toolbar (#1683)
* hide toolbar button and command * removed debug funcs * fix swiftlint violations
1 parent 70cb34a commit ea2ec6f

File tree

2 files changed

+33
-10
lines changed

2 files changed

+33
-10
lines changed

CodeEdit/Features/Documents/Controllers/CodeEditWindowController.swift

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
1414

1515
@Published var navigatorCollapsed = false
1616
@Published var inspectorCollapsed = false
17+
@Published var toolbarCollapsed = false
1718

1819
var observers: [NSKeyValueObservation] = []
1920

@@ -31,9 +32,7 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
3132
init(window: NSWindow, workspace: WorkspaceDocument) {
3233
super.init(window: window)
3334
self.workspace = workspace
34-
self.workspaceSettings = CEWorkspaceSettings(
35-
workspaceDocument: workspace
36-
)
35+
self.workspaceSettings = CEWorkspaceSettings(workspaceDocument: workspace)
3736
setupSplitView(with: workspace)
3837

3938
let view = CodeEditSplitView(controller: splitViewController).ignoresSafeArea()
@@ -55,9 +54,7 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
5554
registerCommands()
5655
}
5756

58-
deinit {
59-
cancellables.forEach({ $0.cancel() })
60-
}
57+
deinit { cancellables.forEach({ $0.cancel() }) }
6158

6259
@available(*, unavailable)
6360
required init?(coder: NSCoder) {
@@ -126,7 +123,7 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
126123
toolbar.delegate = self
127124
toolbar.displayMode = .labelOnly
128125
toolbar.showsBaselineSeparator = false
129-
self.window?.titleVisibility = .hidden
126+
self.window?.titleVisibility = toolbarCollapsed ? .visible : .hidden
130127
self.window?.toolbarStyle = .unifiedCompact
131128
if Settings[\.general].tabBarStyle == .native {
132129
// Set titlebar background as transparent by default in order to
@@ -165,16 +162,30 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
165162
]
166163
}
167164

165+
func toggleToolbar() {
166+
toolbarCollapsed.toggle()
167+
updateToolbarVisibility()
168+
}
169+
170+
private func updateToolbarVisibility() {
171+
if toolbarCollapsed {
172+
window?.titleVisibility = .visible
173+
window?.title = workspace?.workspaceFileManager?.folderUrl.lastPathComponent ?? "Empty"
174+
window?.toolbar = nil
175+
} else {
176+
window?.titleVisibility = .hidden
177+
setupToolbar()
178+
}
179+
}
180+
168181
func toolbar(
169182
_ toolbar: NSToolbar,
170183
itemForItemIdentifier itemIdentifier: NSToolbarItem.Identifier,
171184
willBeInsertedIntoToolbar flag: Bool
172185
) -> NSToolbarItem? {
173186
switch itemIdentifier {
174187
case .itemListTrackingSeparator:
175-
guard let splitViewController else {
176-
return nil
177-
}
188+
guard let splitViewController else { return nil }
178189

179190
return NSTrackingSeparatorToolbarItem(
180191
identifier: .itemListTrackingSeparator,
@@ -219,6 +230,7 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
219230
toolbarItem.view = view
220231

221232
return toolbarItem
233+
222234
default:
223235
return NSToolbarItem(itemIdentifier: itemIdentifier)
224236
}

CodeEdit/Features/WindowCommands/ViewCommands.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,12 @@ struct ViewCommands: Commands {
3636
windowController?.navigatorCollapsed ?? false
3737
}
3838

39+
var toolbarCollapsed: Bool {
40+
windowController?.toolbarCollapsed ?? false
41+
}
42+
3943
var body: some Commands {
44+
4045
CommandGroup(after: .toolbar) {
4146
Button("Show Command Palette") {
4247
NSApp.sendAction(#selector(CodeEditWindowController.openCommandPalette(_:)), to: nil, from: nil)
@@ -102,6 +107,12 @@ struct ViewCommands: Commands {
102107
.disabled(windowController == nil)
103108
.keyboardShortcut("y", modifiers: [.shift, .command])
104109

110+
Button("\(navigatorCollapsed ? "Show" : "Hide") Toolbar") {
111+
windowController?.toggleToolbar()
112+
}
113+
.disabled(windowController == nil)
114+
.keyboardShortcut("t", modifiers: [.option, .command])
115+
105116
Divider()
106117

107118
Button("\(showEditorPathBar ? "Hide" : "Show") Path Bar") {

0 commit comments

Comments
 (0)