From 0debd033de4197e61b98f21850192af74e672361 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sun, 25 Feb 2018 22:02:55 -0800 Subject: [PATCH] Rebuild the tree controller when deleting/undoing-deleting from the sidebar. Fix #292. --- Commands/DeleteFromSidebarCommand.swift | 6 +++++- Evergreen/MainWindow/Sidebar/SidebarViewController.swift | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Commands/DeleteFromSidebarCommand.swift b/Commands/DeleteFromSidebarCommand.swift index 5652bf672..a93bed08c 100644 --- a/Commands/DeleteFromSidebarCommand.swift +++ b/Commands/DeleteFromSidebarCommand.swift @@ -14,6 +14,7 @@ import Data final class DeleteFromSidebarCommand: UndoableCommand { + let treeController: TreeController let undoManager: UndoManager let undoActionName: String var redoActionName: String { @@ -22,7 +23,7 @@ final class DeleteFromSidebarCommand: UndoableCommand { private let itemSpecifiers: [SidebarItemSpecifier] - init?(nodesToDelete: [Node], undoManager: UndoManager) { + init?(nodesToDelete: [Node], treeController: TreeController, undoManager: UndoManager) { guard DeleteFromSidebarCommand.canDelete(nodesToDelete) else { return nil @@ -31,6 +32,7 @@ final class DeleteFromSidebarCommand: UndoableCommand { return nil } + self.treeController = treeController self.undoActionName = actionName self.undoManager = undoManager @@ -45,6 +47,7 @@ final class DeleteFromSidebarCommand: UndoableCommand { BatchUpdate.shared.perform { itemSpecifiers.forEach { $0.delete() } + treeController.rebuild() } registerUndo() } @@ -53,6 +56,7 @@ final class DeleteFromSidebarCommand: UndoableCommand { BatchUpdate.shared.perform { itemSpecifiers.forEach { $0.restore() } + treeController.rebuild() } registerRedo() } diff --git a/Evergreen/MainWindow/Sidebar/SidebarViewController.swift b/Evergreen/MainWindow/Sidebar/SidebarViewController.swift index 2a035aab7..051d828f1 100644 --- a/Evergreen/MainWindow/Sidebar/SidebarViewController.swift +++ b/Evergreen/MainWindow/Sidebar/SidebarViewController.swift @@ -129,7 +129,7 @@ import RSCore let nodesToDelete = treeController.normalizedSelectedNodes(selectedNodes) - guard let undoManager = undoManager, let deleteCommand = DeleteFromSidebarCommand(nodesToDelete: nodesToDelete, undoManager: undoManager) else { + guard let undoManager = undoManager, let deleteCommand = DeleteFromSidebarCommand(nodesToDelete: nodesToDelete, treeController: treeController, undoManager: undoManager) else { return }