public void UndoInternal(bool IncludeSelectionOperation = false) { if (undoStack.Count == 0) { return; } PostFilter undoFilter; do { undoFilter = undoStack.Pop(); redoStack.Push(undoFilter); undoFilter.Undo(); } while ((!IncludeSelectionOperation && (undoFilter is SelectionOperation)) && (undoStack.Count != 0)); if (!(undoFilter is EditingActivatedOperation || undoFilter is SelectionOperation || undoFilter is SetColorOperation)) { ClearCanvas(false); RecreateCanvasViewModel(); UpdateUIElements(); DisplaySettingsTool.SliceImage(); if (undoStack.Count == 0) { UnsavedChanges = false; } } else { UpdateUIElements(); } SelectedTool.OnUndo(); }