Skip to content

Commit f6d31c3

Browse files
authored
Fix Inspector toggling (#1192)
* Fixed inspector not toggling Signed-off-by: Wouter01 <wouterhennen@gmail.com> * Removed old sidebar command Signed-off-by: Wouter01 <wouterhennen@gmail.com> * Fix warning Signed-off-by: Wouter01 <wouterhennen@gmail.com> * fix warning Signed-off-by: Wouter01 <wouterhennen@gmail.com> --------- Signed-off-by: Wouter01 <wouterhennen@gmail.com>
1 parent f493eaf commit f6d31c3

File tree

3 files changed

+45
-4
lines changed

3 files changed

+45
-4
lines changed

CodeEdit/Features/Documents/Controllers/CodeEditWindowController.swift

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,21 @@
88
import Cocoa
99
import SwiftUI
1010

11-
final class CodeEditWindowController: NSWindowController, NSToolbarDelegate {
11+
final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, ObservableObject {
1212
static let minSidebarWidth: CGFloat = 242
1313

14+
@Published var navigatorCollapsed = false
15+
@Published var inspectorCollapsed = false
16+
17+
var observers: [NSKeyValueObservation] = []
18+
1419
private var prefs: AppPreferencesModel = .shared
1520

1621
var workspace: WorkspaceDocument?
1722
var quickOpenPanel: OverlayPanel?
1823
var commandPalettePanel: OverlayPanel?
1924

20-
private var splitViewController: NSSplitViewController!
25+
var splitViewController: NSSplitViewController!
2126

2227
init(window: NSWindow, workspace: WorkspaceDocument) {
2328
super.init(window: window)
@@ -31,6 +36,15 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate {
3136
// This allows us to use some SwiftUI features, like focusedSceneObject.
3237
contentViewController = NSHostingController(rootView: view)
3338

39+
observers = [
40+
splitViewController.splitViewItems.first!.observe(\.isCollapsed, changeHandler: { [weak self] item, _ in
41+
self?.navigatorCollapsed = item.isCollapsed
42+
}),
43+
splitViewController.splitViewItems.last!.observe(\.isCollapsed, changeHandler: { [weak self] item, _ in
44+
self?.navigatorCollapsed = item.isCollapsed
45+
})
46+
]
47+
3448
setupToolbar()
3549
registerCommands()
3650
}
@@ -298,7 +312,9 @@ extension CodeEditWindowController {
298312
func toggleLastPanel() {
299313
guard let lastSplitView = splitViewController.splitViewItems.last else { return }
300314

301-
if lastSplitView.isCollapsed {
315+
if let toolbar = window?.toolbar,
316+
lastSplitView.isCollapsed,
317+
!toolbar.items.map(\.itemIdentifier).contains(.itemListTrackingSeparator) {
302318
window?.toolbar?.insertItem(withItemIdentifier: .itemListTrackingSeparator, at: 4)
303319
}
304320
NSAnimationContext.runAnimationGroup { _ in

CodeEdit/Features/WindowCommands/CodeEditCommands.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ struct CodeEditCommands: Commands {
1212
var body: some Commands {
1313
MainCommands()
1414
FileCommands()
15-
SidebarCommands()
1615
ViewCommands()
1716
FindCommands()
1817
NavigateCommands()

CodeEdit/Features/WindowCommands/ViewCommands.swift

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,15 @@ import SwiftUI
99

1010
struct ViewCommands: Commands {
1111
private var prefs: AppPreferencesModel = .shared
12+
@State var windowController: CodeEditWindowController?
13+
14+
var navigatorCollapsed: Bool {
15+
windowController?.navigatorCollapsed ?? false
16+
}
17+
18+
var inspectorCollapsed: Bool {
19+
windowController?.navigatorCollapsed ?? false
20+
}
1221

1322
var body: some Commands {
1423
CommandGroup(after: .toolbar) {
@@ -33,6 +42,23 @@ struct ViewCommands: Commands {
3342

3443
}
3544
.disabled(true)
45+
46+
Divider()
47+
48+
Button("\(navigatorCollapsed ? "Show" : "Hide") Navigator") {
49+
windowController?.toggleFirstPanel()
50+
}
51+
.disabled(windowController == nil)
52+
.keyboardShortcut("s", modifiers: [.control, .command])
53+
.onReceive(NSApp.publisher(for: \.keyWindow)) { window in
54+
windowController = window?.windowController as? CodeEditWindowController
55+
}
56+
57+
Button("\(inspectorCollapsed ? "Show" : "Hide") Inspector") {
58+
windowController?.toggleLastPanel()
59+
}
60+
.disabled(windowController == nil)
61+
.keyboardShortcut("i", modifiers: [.control, .command])
3662
}
3763
}
3864
}

0 commit comments

Comments
 (0)