Browse Source

Merge pull request #164 from FungusGames/delete-command-undo

Fixed: Undo for delete command is broken #161
master
Chris Gregan 9 years ago
parent
commit
deeaa03993
  1. 14
      Assets/Fungus/Flowchart/Editor/BlockEditor.cs
  2. 5
      Assets/Fungus/Flowchart/Editor/VariableListAdaptor.cs

14
Assets/Fungus/Flowchart/Editor/BlockEditor.cs

@ -990,25 +990,29 @@ namespace Fungus
if (command == selectedCommand) if (command == selectedCommand)
{ {
command.OnCommandRemoved(block); command.OnCommandRemoved(block);
// Order of destruction is important here for undo to work
Undo.DestroyObjectImmediate(command);
Undo.RecordObject(flowchart.selectedBlock, "Delete"); Undo.RecordObject(flowchart.selectedBlock, "Delete");
flowchart.selectedBlock.commandList.RemoveAt(i); flowchart.selectedBlock.commandList.RemoveAt(i);
Undo.DestroyObjectImmediate(command);
lastSelectedIndex = i; lastSelectedIndex = i;
break; break;
} }
} }
} }
Undo.RecordObject(flowchart, "Delete"); Undo.RecordObject(flowchart, "Delete");
flowchart.ClearSelectedCommands(); flowchart.ClearSelectedCommands();
if (lastSelectedIndex < flowchart.selectedBlock.commandList.Count) if (lastSelectedIndex < flowchart.selectedBlock.commandList.Count)
{ {
Command nextCommand = flowchart.selectedBlock.commandList[lastSelectedIndex]; Command nextCommand = flowchart.selectedBlock.commandList[lastSelectedIndex];
block.GetFlowchart().AddSelectedCommand(nextCommand); block.GetFlowchart().AddSelectedCommand(nextCommand);
} }
Repaint(); Repaint();
} }

5
Assets/Fungus/Flowchart/Editor/VariableListAdaptor.cs

@ -138,6 +138,11 @@ namespace Fungus
{ {
foreach (Command selectedCommand in flowchart.selectedCommands) foreach (Command selectedCommand in flowchart.selectedCommands)
{ {
if (selectedCommand == null)
{
continue;
}
if (selectedCommand.HasReference(variable)) if (selectedCommand.HasReference(variable))
{ {
highlight = true; highlight = true;

Loading…
Cancel
Save