@@ -29,8 +29,9 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
29
29
30
30
internal var cancellables = [ AnyCancellable] ( )
31
31
32
- init ( window: NSWindow , workspace: WorkspaceDocument ) {
32
+ init ( window: NSWindow ? , workspace: WorkspaceDocument ? ) {
33
33
super. init ( window: window)
34
+ guard let workspace else { return }
34
35
self . workspace = workspace
35
36
self . workspaceSettings = CEWorkspaceSettings ( workspaceDocument: workspace)
36
37
setupSplitView ( with: workspace)
@@ -46,7 +47,7 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
46
47
self ? . navigatorCollapsed = item. isCollapsed
47
48
} ) ,
48
49
splitViewController. splitViewItems. last!. observe ( \. isCollapsed, changeHandler: { [ weak self] item, _ in
49
- self ? . navigatorCollapsed = item. isCollapsed
50
+ self ? . inspectorCollapsed = item. isCollapsed
50
51
} )
51
52
]
52
53
@@ -118,124 +119,6 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
118
119
self . listenToDocumentEdited ( workspace: workspace)
119
120
}
120
121
121
- private func setupToolbar( ) {
122
- let toolbar = NSToolbar ( identifier: UUID ( ) . uuidString)
123
- toolbar. delegate = self
124
- toolbar. displayMode = . labelOnly
125
- toolbar. showsBaselineSeparator = false
126
- self . window? . titleVisibility = toolbarCollapsed ? . visible : . hidden
127
- self . window? . toolbarStyle = . unifiedCompact
128
- if Settings [ \. general] . tabBarStyle == . native {
129
- // Set titlebar background as transparent by default in order to
130
- // style the toolbar background in native tab bar style.
131
- self . window? . titlebarSeparatorStyle = . none
132
- } else {
133
- // In Xcode tab bar style, we use default toolbar background with
134
- // line separator.
135
- self . window? . titlebarSeparatorStyle = . automatic
136
- }
137
- self . window? . toolbar = toolbar
138
- }
139
-
140
- // MARK: - Toolbar
141
-
142
- func toolbarDefaultItemIdentifiers( _ toolbar: NSToolbar ) -> [ NSToolbarItem . Identifier ] {
143
- [
144
- . toggleFirstSidebarItem,
145
- . sidebarTrackingSeparator,
146
- . branchPicker,
147
- . flexibleSpace,
148
- . itemListTrackingSeparator,
149
- . flexibleSpace,
150
- . toggleLastSidebarItem
151
- ]
152
- }
153
-
154
- func toolbarAllowedItemIdentifiers( _ toolbar: NSToolbar ) -> [ NSToolbarItem . Identifier ] {
155
- [
156
- . toggleFirstSidebarItem,
157
- . sidebarTrackingSeparator,
158
- . flexibleSpace,
159
- . itemListTrackingSeparator,
160
- . toggleLastSidebarItem,
161
- . branchPicker
162
- ]
163
- }
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
-
181
- func toolbar(
182
- _ toolbar: NSToolbar ,
183
- itemForItemIdentifier itemIdentifier: NSToolbarItem . Identifier ,
184
- willBeInsertedIntoToolbar flag: Bool
185
- ) -> NSToolbarItem ? {
186
- switch itemIdentifier {
187
- case . itemListTrackingSeparator:
188
- guard let splitViewController else { return nil }
189
-
190
- return NSTrackingSeparatorToolbarItem (
191
- identifier: . itemListTrackingSeparator,
192
- splitView: splitViewController. splitView,
193
- dividerIndex: 1
194
- )
195
- case . toggleFirstSidebarItem:
196
- let toolbarItem = NSToolbarItem ( itemIdentifier: NSToolbarItem . Identifier. toggleFirstSidebarItem)
197
- toolbarItem. label = " Navigator Sidebar "
198
- toolbarItem. paletteLabel = " Navigator Sidebar "
199
- toolbarItem. toolTip = " Hide or show the Navigator "
200
- toolbarItem. isBordered = true
201
- toolbarItem. target = self
202
- toolbarItem. action = #selector( self . toggleFirstPanel)
203
- toolbarItem. image = NSImage (
204
- systemSymbolName: " sidebar.leading " ,
205
- accessibilityDescription: nil
206
- ) ? . withSymbolConfiguration ( . init( scale: . large) )
207
-
208
- return toolbarItem
209
- case . toggleLastSidebarItem:
210
- let toolbarItem = NSToolbarItem ( itemIdentifier: NSToolbarItem . Identifier. toggleLastSidebarItem)
211
- toolbarItem. label = " Inspector Sidebar "
212
- toolbarItem. paletteLabel = " Inspector Sidebar "
213
- toolbarItem. toolTip = " Hide or show the Inspectors "
214
- toolbarItem. isBordered = true
215
- toolbarItem. target = self
216
- toolbarItem. action = #selector( self . toggleLastPanel)
217
- toolbarItem. image = NSImage (
218
- systemSymbolName: " sidebar.trailing " ,
219
- accessibilityDescription: nil
220
- ) ? . withSymbolConfiguration ( . init( scale: . large) )
221
-
222
- return toolbarItem
223
- case . branchPicker:
224
- let toolbarItem = NSToolbarItem ( itemIdentifier: . branchPicker)
225
- let view = NSHostingView (
226
- rootView: ToolbarBranchPicker (
227
- workspaceFileManager: workspace? . workspaceFileManager
228
- )
229
- )
230
- toolbarItem. view = view
231
-
232
- return toolbarItem
233
-
234
- default :
235
- return NSToolbarItem ( itemIdentifier: itemIdentifier)
236
- }
237
- }
238
-
239
122
private func getSelectedCodeFile( ) -> CodeFileDocument ? {
240
123
workspace? . editorManager. activeEditor. selectedTab? . file. fileDocument
241
124
}
0 commit comments