From 4139c9e8c4fe9f136c21b80e4127ac0c851cbdca Mon Sep 17 00:00:00 2001 From: Tobias Jordan Date: Thu, 2 Jun 2022 00:43:32 +0200 Subject: [PATCH] Fix batch moving of rows in NSTableView `NSTableView` doesn't support batch updating so every change (insert, delete, move) may alter its row indexes, making it difficult to apply moves generated from a `StagedChangeset` unless indexes are corrected accordingly and it is ensured that inserts are always performed after any moves. --- Sources/Extensions/AppKitExtension.swift | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/Sources/Extensions/AppKitExtension.swift b/Sources/Extensions/AppKitExtension.swift index 8616187..0570448 100644 --- a/Sources/Extensions/AppKitExtension.swift +++ b/Sources/Extensions/AppKitExtension.swift @@ -73,16 +73,24 @@ public extension NSTableView { removeRows(at: IndexSet(changeset.elementDeleted.map { $0.element }), withAnimation: deleteRowsAnimation()) } - if !changeset.elementInserted.isEmpty { - insertRows(at: IndexSet(changeset.elementInserted.map { $0.element }), withAnimation: insertRowsAnimation()) - } - if !changeset.elementUpdated.isEmpty { reloadData(forRowIndexes: IndexSet(changeset.elementUpdated.map { $0.element }), columnIndexes: IndexSet(0..