diff --git a/Assets/Fungus/Flowchart/Editor/BlockEditor.cs b/Assets/Fungus/Flowchart/Editor/BlockEditor.cs index 42d5479a..4689de23 100644 --- a/Assets/Fungus/Flowchart/Editor/BlockEditor.cs +++ b/Assets/Fungus/Flowchart/Editor/BlockEditor.cs @@ -990,25 +990,29 @@ namespace Fungus if (command == selectedCommand) { command.OnCommandRemoved(block); - + + // Order of destruction is important here for undo to work + Undo.DestroyObjectImmediate(command); + Undo.RecordObject(flowchart.selectedBlock, "Delete"); flowchart.selectedBlock.commandList.RemoveAt(i); - Undo.DestroyObjectImmediate(command); + lastSelectedIndex = i; + break; } } } - + Undo.RecordObject(flowchart, "Delete"); flowchart.ClearSelectedCommands(); - + if (lastSelectedIndex < flowchart.selectedBlock.commandList.Count) { Command nextCommand = flowchart.selectedBlock.commandList[lastSelectedIndex]; block.GetFlowchart().AddSelectedCommand(nextCommand); } - + Repaint(); } diff --git a/Assets/Fungus/Flowchart/Editor/VariableListAdaptor.cs b/Assets/Fungus/Flowchart/Editor/VariableListAdaptor.cs index 947dc35a..61c34b9f 100644 --- a/Assets/Fungus/Flowchart/Editor/VariableListAdaptor.cs +++ b/Assets/Fungus/Flowchart/Editor/VariableListAdaptor.cs @@ -138,6 +138,11 @@ namespace Fungus { foreach (Command selectedCommand in flowchart.selectedCommands) { + if (selectedCommand == null) + { + continue; + } + if (selectedCommand.HasReference(variable)) { highlight = true;