diff --git a/src/DynamoCore/Core/UndoRedoRecorder.cs b/src/DynamoCore/Core/UndoRedoRecorder.cs index d5606fb03de..a15673ed514 100644 --- a/src/DynamoCore/Core/UndoRedoRecorder.cs +++ b/src/DynamoCore/Core/UndoRedoRecorder.cs @@ -6,6 +6,7 @@ using Dynamo.Graph.Connectors; using Dynamo.Graph.Nodes; using Dynamo.Graph.Workspaces; +using Dynamo.Logging; namespace Dynamo.Core { @@ -56,7 +57,7 @@ internal interface IUndoRedoRecorderClient ModelBase GetModelForElement(XmlElement modelData); } - internal class UndoRedoRecorder + internal class UndoRedoRecorder : LogSourceBase { #region Private Class Data Members @@ -241,7 +242,15 @@ public XmlElement PopFromUndoGroup() "UndoStack cannot be popped with non-empty RedoStack"); } - return PopActionGroupFromUndoStack(); + try + { + return PopActionGroupFromUndoStack(); + } + catch (InvalidOperationException ex) + { + Log(ex); + return null; + } } #endregion @@ -310,7 +319,7 @@ private void SetNodeAction(XmlNode childNode, string action) childNode.Attributes.Append(actionAttribute); } - private XmlElement PopActionGroupFromUndoStack() + internal XmlElement PopActionGroupFromUndoStack() { if (CanUndo == false) { diff --git a/test/DynamoCoreTests/UndoRedoRecorderTests.cs b/test/DynamoCoreTests/UndoRedoRecorderTests.cs index 0c0fcb05c9d..06a3742cea1 100644 --- a/test/DynamoCoreTests/UndoRedoRecorderTests.cs +++ b/test/DynamoCoreTests/UndoRedoRecorderTests.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Xml; @@ -565,7 +565,7 @@ public void TestClearingStacks01() public void TestPopFromUndoGroup() { //Assert that it cannot pop from an empty undostack - Assert.Throws(() => { recorder.PopFromUndoGroup(); }); + Assert.Throws(() => { recorder.PopActionGroupFromUndoStack(); }); //Add models workspace.AddModel(new DummyModel(1, 10));