Skip to content

Commit 73b86a0

Browse files
committed
fix: use partial reload for data grid settings changes to prevent stale data
1 parent bad1dca commit 73b86a0

1 file changed

Lines changed: 16 additions & 3 deletions

File tree

TablePro/Views/Results/DataGridView.swift

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -730,9 +730,22 @@ final class TableViewCoordinator: NSObject, NSTableViewDelegate, NSTableViewData
730730
DispatchQueue.main.async { [weak self] in
731731
guard let self, let tableView = self.tableView else { return }
732732
let newRowHeight = CGFloat(AppSettingsManager.shared.dataGrid.rowHeight.rawValue)
733-
tableView.rowHeight = newRowHeight
734-
tableView.reloadData()
735-
tableView.tile()
733+
734+
if tableView.rowHeight != newRowHeight {
735+
tableView.rowHeight = newRowHeight
736+
tableView.tile()
737+
}
738+
739+
// Reload visible rows to apply font/formatting changes.
740+
// Off-screen cells pick up new fonts from DataGridFontCache on scroll.
741+
let visibleRect = tableView.visibleRect
742+
let visibleRange = tableView.rows(in: visibleRect)
743+
if visibleRange.length > 0 {
744+
tableView.reloadData(
745+
forRowIndexes: IndexSet(integersIn: visibleRange.location..<(visibleRange.location + visibleRange.length)),
746+
columnIndexes: IndexSet(integersIn: 0..<tableView.numberOfColumns)
747+
)
748+
}
736749
}
737750
}
738751
}

0 commit comments

Comments
 (0)