From fb01734a38f9f5ba24d5f113f506aae10c429db3 Mon Sep 17 00:00:00 2001 From: Zach Day Date: Sun, 27 Oct 2024 21:46:18 -0400 Subject: [PATCH] Use new deletion function --- ...lEditorViewModel.UserInteractionActions.cs | 19 ++++++++++++------- .../ViewModels/SelectionArea.cs | 18 +----------------- 2 files changed, 13 insertions(+), 24 deletions(-) diff --git a/OngekiFumenEditor/Modules/FumenVisualEditor/ViewModels/FumenVisualEditorViewModel.UserInteractionActions.cs b/OngekiFumenEditor/Modules/FumenVisualEditor/ViewModels/FumenVisualEditorViewModel.UserInteractionActions.cs index 12a24312..32b03b90 100644 --- a/OngekiFumenEditor/Modules/FumenVisualEditor/ViewModels/FumenVisualEditorViewModel.UserInteractionActions.cs +++ b/OngekiFumenEditor/Modules/FumenVisualEditor/ViewModels/FumenVisualEditorViewModel.UserInteractionActions.cs @@ -621,23 +621,28 @@ public void KeyboardAction_FastPlaceDockableObject(LaneType targetType, ILaneDoc } public void KeyboardAction_DeleteSelectingObjects(ActionExecutionContext e) + { + DeleteSelection(); + } + + public void DeleteSelection(IEnumerable selection = null) { if (IsLocked) return; //获取要删除的物件 - var selects = SelectObjects.OfType().ToArray(); + var selects = selection?.ToArray() ?? SelectObjects.OfType().ToArray(); //依附于其他对象的子物件,比如轨道节点,曲线控制节点,无法做到单纯删除和添加 //记录它们子节点相对于集合的位置,下次恢复的时候就是插入了 var curveControlMaps = selects - .OfType() - .GroupBy(x => x.RefCurveObject) - .ToDictionary(x => x.Key, x => x.Select(c => (c, x.Key.PathControls.FirstIndexOf(p => p == c))).OrderBy(x => x.Item2).ToArray()); + .OfType() + .GroupBy(x => x.RefCurveObject) + .ToDictionary(x => x.Key, x => x.Select(c => (c, x.Key.PathControls.FirstIndexOf(p => p == c))).OrderBy(x => x.Item2).ToArray()); var connectablesMaps = selects - .OfType() - .GroupBy(x => x.ReferenceStartObject) - .ToDictionary(x => x.Key, x => x.Select(c => (c, x.Key.Children.FirstIndexOf(p => p == c))).OrderBy(x => x.Item2).ToArray()); + .OfType() + .GroupBy(x => x.ReferenceStartObject) + .ToDictionary(x => x.Key, x => x.Select(c => (c, x.Key.Children.FirstIndexOf(p => p == c))).OrderBy(x => x.Item2).ToArray()); var expectedObjects = selects.Where(x => x switch { diff --git a/OngekiFumenEditor/Modules/FumenVisualEditor/ViewModels/SelectionArea.cs b/OngekiFumenEditor/Modules/FumenVisualEditor/ViewModels/SelectionArea.cs index b5add758..48356413 100644 --- a/OngekiFumenEditor/Modules/FumenVisualEditor/ViewModels/SelectionArea.cs +++ b/OngekiFumenEditor/Modules/FumenVisualEditor/ViewModels/SelectionArea.cs @@ -143,23 +143,7 @@ public class SelectionAreaKind if (!objs.Any()) return; - IoC.Get().RefreshSelected(editor); - - editor.UndoRedoManager.ExecuteAction(new LambdaUndoAction(Resources.DeleteObjects, Redo, Undo)); - - return; - - void Redo() - { - foreach (var o in objs) - editor.Fumen.RemoveObject(o); - } - - void Undo() - { - foreach (var o in objs) - editor.Fumen.AddObject(o); - } + editor.DeleteSelection(); }); public readonly Action> SelectAction;