@@ -14,6 +14,7 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
14
14
15
15
@Published var navigatorCollapsed = false
16
16
@Published var inspectorCollapsed = false
17
+ @Published var toolbarCollapsed = false
17
18
18
19
var observers : [ NSKeyValueObservation ] = [ ]
19
20
@@ -31,9 +32,7 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
31
32
init ( window: NSWindow , workspace: WorkspaceDocument ) {
32
33
super. init ( window: window)
33
34
self . workspace = workspace
34
- self . workspaceSettings = CEWorkspaceSettings (
35
- workspaceDocument: workspace
36
- )
35
+ self . workspaceSettings = CEWorkspaceSettings ( workspaceDocument: workspace)
37
36
setupSplitView ( with: workspace)
38
37
39
38
let view = CodeEditSplitView ( controller: splitViewController) . ignoresSafeArea ( )
@@ -55,9 +54,7 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
55
54
registerCommands ( )
56
55
}
57
56
58
- deinit {
59
- cancellables. forEach ( { $0. cancel ( ) } )
60
- }
57
+ deinit { cancellables. forEach ( { $0. cancel ( ) } ) }
61
58
62
59
@available ( * , unavailable)
63
60
required init ? ( coder: NSCoder ) {
@@ -126,7 +123,7 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
126
123
toolbar. delegate = self
127
124
toolbar. displayMode = . labelOnly
128
125
toolbar. showsBaselineSeparator = false
129
- self . window? . titleVisibility = . hidden
126
+ self . window? . titleVisibility = toolbarCollapsed ? . visible : . hidden
130
127
self . window? . toolbarStyle = . unifiedCompact
131
128
if Settings [ \. general] . tabBarStyle == . native {
132
129
// Set titlebar background as transparent by default in order to
@@ -165,16 +162,30 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
165
162
]
166
163
}
167
164
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
+
168
181
func toolbar(
169
182
_ toolbar: NSToolbar ,
170
183
itemForItemIdentifier itemIdentifier: NSToolbarItem . Identifier ,
171
184
willBeInsertedIntoToolbar flag: Bool
172
185
) -> NSToolbarItem ? {
173
186
switch itemIdentifier {
174
187
case . itemListTrackingSeparator:
175
- guard let splitViewController else {
176
- return nil
177
- }
188
+ guard let splitViewController else { return nil }
178
189
179
190
return NSTrackingSeparatorToolbarItem (
180
191
identifier: . itemListTrackingSeparator,
@@ -219,6 +230,7 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
219
230
toolbarItem. view = view
220
231
221
232
return toolbarItem
233
+
222
234
default :
223
235
return NSToolbarItem ( itemIdentifier: itemIdentifier)
224
236
}
0 commit comments