@@ -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 }
0 commit comments