Skip to content

Commit 2b266cb

Browse files
committed
refactor(datagrid): remove dead TableRowsController that bypassed row-count cache
1 parent 3a0bcb2 commit 2b266cb

6 files changed

Lines changed: 33 additions & 222 deletions

File tree

TablePro/Views/Results/DataGridCoordinator.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,6 @@ final class TableViewCoordinator: NSObject, NSTableViewDelegate, NSTableViewData
109109
let cellFactory = DataGridCellFactory()
110110
let cellRegistry: DataGridCellRegistry
111111
let columnPool = DataGridColumnPool()
112-
let tableRowsController = TableRowsController()
113112
let selectionController = GridSelectionController()
114113
var overlayEditor: CellOverlayEditor?
115114
var overlayViewer: CellOverlayViewer?
@@ -234,7 +233,6 @@ final class TableViewCoordinator: NSObject, NSTableViewDelegate, NSTableViewData
234233
}
235234
tableView.reloadData()
236235
}
237-
tableRowsController.detach()
238236
delegate = nil
239237
activeFKPreviewPopover?.close()
240238
clearFKPreviewState()

TablePro/Views/Results/DataGridView.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,6 @@ struct DataGridView: NSViewRepresentable {
109109
context.coordinator.tableView = tableView
110110
installSelectionOverlay(tableView: tableView, coordinator: context.coordinator)
111111
context.coordinator.attachScrollObservers(scrollView: scrollView)
112-
context.coordinator.tableRowsController.attach(tableView)
113112
context.coordinator.tableRowsProvider = tableRowsProvider
114113
context.coordinator.tableRowsMutator = tableRowsMutator
115114
context.coordinator.paginationOffsetProvider = paginationOffsetProvider
@@ -426,7 +425,6 @@ struct DataGridView: NSViewRepresentable {
426425
coordinator.persistColumnLayoutToStorage()
427426
coordinator.settingsCancellable = nil
428427
coordinator.themeCancellable = nil
429-
coordinator.tableRowsController.detach()
430428
}
431429

432430
func makeCoordinator() -> TableViewCoordinator {

TablePro/Views/Results/Extensions/DataGridView+CellCommit.swift

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,10 @@ extension TableViewCoordinator {
2626
in: tableView,
2727
schema: identitySchema
2828
) else { return }
29-
if case .cellChanged = delta {
30-
tableRowsController.apply(.cellChanged(row: row, column: tableColumnIndex))
31-
} else {
32-
tableView.reloadData(
33-
forRowIndexes: IndexSet(integer: row),
34-
columnIndexes: IndexSet(integer: tableColumnIndex)
35-
)
36-
}
29+
tableView.reloadData(
30+
forRowIndexes: IndexSet(integer: row),
31+
columnIndexes: IndexSet(integer: tableColumnIndex)
32+
)
3733
}
3834

3935
@discardableResult

TablePro/Views/Results/TableRowsController.swift

Lines changed: 0 additions & 54 deletions
This file was deleted.

TableProTests/Views/Results/TableRowsControllerTests.swift

Lines changed: 0 additions & 156 deletions
This file was deleted.

TableProTests/Views/Results/TableViewCoordinatorRowCountCacheTests.swift

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// TableProTests
44
//
55

6+
import AppKit
67
import SwiftUI
78
import TableProPluginKit
89
import Testing
@@ -88,6 +89,34 @@ struct TableViewCoordinatorRowCountCacheTests {
8889
#expect(coordinator.cachedRowCount == coordinator.tableRowsProvider().count)
8990
}
9091

92+
@Test("numberOfRows serves cachedRowCount when unsorted")
93+
func numberOfRowsServesCacheWhenUnsorted() {
94+
let rows: ContiguousArray<Row> = [
95+
Row(id: .existing(0), values: [.text("a")]),
96+
Row(id: .existing(1), values: [.text("b")]),
97+
]
98+
let coordinator = makeCoordinator(rows: rows)
99+
let tableView = NSTableView()
100+
101+
#expect(coordinator.numberOfRows(in: tableView) == 2)
102+
#expect(coordinator.numberOfRows(in: tableView) == coordinator.tableRowsProvider().count)
103+
}
104+
105+
@Test("numberOfRows serves sortedIDs count when sorted")
106+
func numberOfRowsServesSortedIDsCountWhenSorted() {
107+
let rows: ContiguousArray<Row> = [
108+
Row(id: .existing(0), values: [.text("a")]),
109+
Row(id: .existing(1), values: [.text("b")]),
110+
Row(id: .existing(2), values: [.text("c")]),
111+
]
112+
let coordinator = makeCoordinator(rows: rows)
113+
let tableView = NSTableView()
114+
coordinator.sortedIDs = [.existing(2), .existing(0)]
115+
coordinator.updateCache()
116+
117+
#expect(coordinator.numberOfRows(in: tableView) == 2)
118+
}
119+
91120
@Test("sortedIDs count takes precedence over cachedRowCount fallback")
92121
func sortedIDsCountPrecedesCache() {
93122
let rows: ContiguousArray<Row> = [

0 commit comments

Comments
 (0)