Skip to content

Commit 605cf54

Browse files
thecoolwinterlukepistrol
authored andcommitted
Let inspector view resize
1 parent 8a0595b commit 605cf54

File tree

3 files changed

+49
-11
lines changed

3 files changed

+49
-11
lines changed

CodeEdit/Features/Documents/Controllers/CodeEditSplitViewController.swift

Lines changed: 45 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import Cocoa
99

10-
private extension CGFloat {
10+
fileprivate extension CGFloat {
1111
static let snapWidth: CGFloat = 272
1212

1313
static let minSnapWidth: CGFloat = snapWidth - 10
@@ -51,12 +51,50 @@ final class CodeEditSplitViewController: NSSplitViewController {
5151
constrainSplitPosition proposedPosition: CGFloat,
5252
ofSubviewAt dividerIndex: Int
5353
) -> CGFloat {
54-
if (CGFloat.minSnapWidth...CGFloat.maxSnapWidth).contains(proposedPosition) {
55-
isSnapped = true
56-
return .snapWidth
57-
} else {
58-
isSnapped = false
59-
return proposedPosition
54+
if dividerIndex == 0 {
55+
// Navigator
56+
if (CGFloat.minSnapWidth...CGFloat.maxSnapWidth).contains(proposedPosition) {
57+
isSnapped = true
58+
return .snapWidth
59+
} else {
60+
isSnapped = false
61+
if proposedPosition <= 121 {
62+
splitViewItems.first?.isCollapsed = true
63+
return 0
64+
}
65+
return max(242, proposedPosition)
66+
}
67+
} else if dividerIndex == 1 {
68+
let proposedWidth = view.frame.width - proposedPosition
69+
if proposedWidth <= 121 {
70+
splitViewItems.last?.isCollapsed = true
71+
removeToolbarItemIfNeeded()
72+
return proposedPosition
73+
}
74+
splitViewItems.last?.isCollapsed = false
75+
insertToolbarItemIfNeeded()
76+
return min(view.frame.width - 242, proposedPosition)
77+
}
78+
return proposedPosition
79+
}
80+
81+
/// Quick fix for list tracking separator needing to be added again after closing, then opening the inspector with a drag.
82+
private func insertToolbarItemIfNeeded() {
83+
guard !(
84+
view.window?.toolbar?.items.contains(where: { $0.itemIdentifier == .itemListTrackingSeparator }) ?? true
85+
) else {
86+
return
87+
}
88+
view.window?.toolbar?.insertItem(withItemIdentifier: .itemListTrackingSeparator, at: 4)
89+
}
90+
91+
/// Quick fix for list tracking separator needing to be removed after closing the inspector with a drag
92+
private func removeToolbarItemIfNeeded() {
93+
guard let index = view.window?.toolbar?.items.firstIndex(
94+
where: { $0.itemIdentifier == .itemListTrackingSeparator }
95+
) else {
96+
return
6097
}
98+
view.window?.toolbar?.removeItem(at: index)
6199
}
62100
}

CodeEdit/Features/Documents/Controllers/CodeEditWindowController.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,9 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate {
9292
viewController: NSHostingController(rootView: inspectorView)
9393
)
9494
inspector.titlebarSeparatorStyle = .none
95-
inspector.minimumThickness = 260
96-
inspector.maximumThickness = 260
95+
inspector.minimumThickness = 242
9796
inspector.isCollapsed = true
97+
inspector.canCollapse = true
9898
inspector.collapseBehavior = .useConstraints
9999
splitVC.addSplitViewItem(inspector)
100100

@@ -288,7 +288,7 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate {
288288
}
289289
}
290290

291-
private extension NSToolbarItem.Identifier {
291+
extension NSToolbarItem.Identifier {
292292
static let toggleFirstSidebarItem: NSToolbarItem.Identifier = NSToolbarItem.Identifier("ToggleFirstSidebarItem")
293293
static let toggleLastSidebarItem: NSToolbarItem.Identifier = NSToolbarItem.Identifier("ToggleLastSidebarItem")
294294
static let itemListTrackingSeparator = NSToolbarItem.Identifier("ItemListTrackingSeparator")

CodeEdit/Features/InspectorSidebar/InspectorSidebarView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ struct InspectorSidebarView: View {
4646
}
4747
}
4848
.frame(
49-
minWidth: 250,
49+
minWidth: 242,
5050
idealWidth: 260,
5151
minHeight: 0,
5252
maxHeight: .infinity,

0 commit comments

Comments
 (0)