Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ struct GeneralPreferencesView: View {
updaterSection
}
}
.frame(minHeight: 650)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,51 @@ final class CodeEditSplitViewController: NSSplitViewController {
constrainSplitPosition proposedPosition: CGFloat,
ofSubviewAt dividerIndex: Int
) -> CGFloat {
if (CGFloat.minSnapWidth...CGFloat.maxSnapWidth).contains(proposedPosition) {
isSnapped = true
return .snapWidth
} else {
isSnapped = false
return proposedPosition
if dividerIndex == 0 {
// Navigator
if (CGFloat.minSnapWidth...CGFloat.maxSnapWidth).contains(proposedPosition) {
isSnapped = true
return .snapWidth
} else {
isSnapped = false
if proposedPosition <= CodeEditWindowController.minSidebarWidth / 2 {
splitViewItems.first?.isCollapsed = true
return 0
}
return max(CodeEditWindowController.minSidebarWidth, proposedPosition)
}
} else if dividerIndex == 1 {
let proposedWidth = view.frame.width - proposedPosition
if proposedWidth <= CodeEditWindowController.minSidebarWidth / 2 {
splitViewItems.last?.isCollapsed = true
removeToolbarItemIfNeeded()
return proposedPosition
}
splitViewItems.last?.isCollapsed = false
insertToolbarItemIfNeeded()
return min(view.frame.width - CodeEditWindowController.minSidebarWidth, proposedPosition)
}
return proposedPosition
}

/// Quick fix for list tracking separator needing to be added again after closing,
/// then opening the inspector with a drag.
private func insertToolbarItemIfNeeded() {
guard !(
view.window?.toolbar?.items.contains(where: { $0.itemIdentifier == .itemListTrackingSeparator }) ?? true
) else {
return
}
view.window?.toolbar?.insertItem(withItemIdentifier: .itemListTrackingSeparator, at: 4)
}

/// Quick fix for list tracking separator needing to be removed after closing the inspector with a drag
private func removeToolbarItemIfNeeded() {
guard let index = view.window?.toolbar?.items.firstIndex(
where: { $0.itemIdentifier == .itemListTrackingSeparator }
) else {
return
}
view.window?.toolbar?.removeItem(at: index)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import Cocoa
import SwiftUI

final class CodeEditWindowController: NSWindowController, NSToolbarDelegate {
static let minSidebarWidth: CGFloat = 242

private var prefs: AppPreferencesModel = .shared

var workspace: WorkspaceDocument?
Expand Down Expand Up @@ -73,7 +75,7 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate {
sidebarWithViewController: NSHostingController(rootView: navigatorView)
)
navigator.titlebarSeparatorStyle = .none
navigator.minimumThickness = 242
navigator.minimumThickness = Self.minSidebarWidth
navigator.collapseBehavior = .useConstraints
splitVC.addSplitViewItem(navigator)

Expand All @@ -92,9 +94,9 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate {
viewController: NSHostingController(rootView: inspectorView)
)
inspector.titlebarSeparatorStyle = .none
inspector.minimumThickness = 260
inspector.maximumThickness = 260
inspector.minimumThickness = Self.minSidebarWidth
inspector.isCollapsed = true
inspector.canCollapse = true
inspector.collapseBehavior = .useConstraints
splitVC.addSplitViewItem(inspector)

Expand Down Expand Up @@ -288,7 +290,7 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate {
}
}

private extension NSToolbarItem.Identifier {
extension NSToolbarItem.Identifier {
static let toggleFirstSidebarItem: NSToolbarItem.Identifier = NSToolbarItem.Identifier("ToggleFirstSidebarItem")
static let toggleLastSidebarItem: NSToolbarItem.Identifier = NSToolbarItem.Identifier("ToggleLastSidebarItem")
static let itemListTrackingSeparator = NSToolbarItem.Identifier("ItemListTrackingSeparator")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ struct InspectorSidebarView: View {
}
}
.frame(
minWidth: 250,
minWidth: CodeEditWindowController.minSidebarWidth,
idealWidth: 260,
minHeight: 0,
maxHeight: .infinity,
Expand Down
3 changes: 2 additions & 1 deletion CodeEditTests/Features/Documents/DocumentsUnitTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ final class DocumentsUnitTests: XCTestCase {

func testSplitViewControllerStopSnappedWhenWidthIsLowerAppropriateRange() {
// Given
let position = (0..<260).randomElement() ?? .zero
// 242 is the minimum width of the sidebar
let position = (242..<260).randomElement() ?? .zero

// When
let result = splitViewController.splitView(
Expand Down