mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-01 09:47:22 +13:00
Code refactoring
This commit is contained in:
parent
aa6f127825
commit
40bd40c52e
2 changed files with 17 additions and 18 deletions
|
@ -35,9 +35,9 @@ internal class ImageEditorHistory : IDisposable
|
||||||
public bool CanUndo => undoMementoStack.Count > 0;
|
public bool CanUndo => undoMementoStack.Count > 0;
|
||||||
public bool CanRedo => redoMementoStack.Count > 0;
|
public bool CanRedo => redoMementoStack.Count > 0;
|
||||||
|
|
||||||
|
private readonly ShapeManager shapeManager;
|
||||||
private Stack<ImageEditorMemento> undoMementoStack = new Stack<ImageEditorMemento>();
|
private Stack<ImageEditorMemento> undoMementoStack = new Stack<ImageEditorMemento>();
|
||||||
private Stack<ImageEditorMemento> redoMementoStack = new Stack<ImageEditorMemento>();
|
private Stack<ImageEditorMemento> redoMementoStack = new Stack<ImageEditorMemento>();
|
||||||
private readonly ShapeManager shapeManager;
|
|
||||||
|
|
||||||
public ImageEditorHistory(ShapeManager shapeManager)
|
public ImageEditorHistory(ShapeManager shapeManager)
|
||||||
{
|
{
|
||||||
|
@ -50,7 +50,7 @@ private void AddMemento(ImageEditorMemento memento)
|
||||||
|
|
||||||
foreach (ImageEditorMemento redoMemento in redoMementoStack)
|
foreach (ImageEditorMemento redoMemento in redoMementoStack)
|
||||||
{
|
{
|
||||||
redoMemento.Dispose();
|
redoMemento?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
redoMementoStack.Clear();
|
redoMementoStack.Clear();
|
||||||
|
@ -85,24 +85,23 @@ public void Undo()
|
||||||
{
|
{
|
||||||
if (CanUndo)
|
if (CanUndo)
|
||||||
{
|
{
|
||||||
ImageEditorMemento redoMemento;
|
ImageEditorMemento undoMemento = undoMementoStack.Pop();
|
||||||
ImageEditorMemento memento = undoMementoStack.Pop();
|
|
||||||
|
|
||||||
if (memento.Shapes != null)
|
if (undoMemento.Shapes != null)
|
||||||
{
|
{
|
||||||
if (memento.Canvas == null)
|
if (undoMemento.Canvas == null)
|
||||||
{
|
{
|
||||||
redoMemento = GetMementoFromShapes();
|
ImageEditorMemento redoMemento = GetMementoFromShapes();
|
||||||
redoMementoStack.Push(redoMemento);
|
redoMementoStack.Push(redoMemento);
|
||||||
|
|
||||||
shapeManager.RestoreState(memento);
|
shapeManager.RestoreState(undoMemento);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
redoMemento = GetMementoFromCanvas();
|
ImageEditorMemento redoMemento = GetMementoFromCanvas();
|
||||||
redoMementoStack.Push(redoMemento);
|
redoMementoStack.Push(redoMemento);
|
||||||
|
|
||||||
shapeManager.RestoreState(memento);
|
shapeManager.RestoreState(undoMemento);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -118,15 +117,15 @@ public void Redo()
|
||||||
{
|
{
|
||||||
if (redoMemento.Canvas == null)
|
if (redoMemento.Canvas == null)
|
||||||
{
|
{
|
||||||
ImageEditorMemento memento = GetMementoFromShapes();
|
ImageEditorMemento undoMemento = GetMementoFromShapes();
|
||||||
undoMementoStack.Push(memento);
|
undoMementoStack.Push(undoMemento);
|
||||||
|
|
||||||
shapeManager.RestoreState(redoMemento);
|
shapeManager.RestoreState(redoMemento);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ImageEditorMemento memento = GetMementoFromCanvas();
|
ImageEditorMemento undoMemento = GetMementoFromCanvas();
|
||||||
undoMementoStack.Push(memento);
|
undoMementoStack.Push(undoMemento);
|
||||||
|
|
||||||
shapeManager.RestoreState(redoMemento);
|
shapeManager.RestoreState(redoMemento);
|
||||||
}
|
}
|
||||||
|
@ -136,16 +135,16 @@ public void Redo()
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
foreach (ImageEditorMemento memento in undoMementoStack)
|
foreach (ImageEditorMemento undoMemento in undoMementoStack)
|
||||||
{
|
{
|
||||||
memento.Dispose();
|
undoMemento?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
undoMementoStack.Clear();
|
undoMementoStack.Clear();
|
||||||
|
|
||||||
foreach (ImageEditorMemento redoMemento in redoMementoStack)
|
foreach (ImageEditorMemento redoMemento in redoMementoStack)
|
||||||
{
|
{
|
||||||
redoMemento.Dispose();
|
redoMemento?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
redoMementoStack.Clear();
|
redoMementoStack.Clear();
|
||||||
|
|
|
@ -49,7 +49,7 @@ public void Dispose()
|
||||||
{
|
{
|
||||||
foreach (BaseShape shape in Shapes)
|
foreach (BaseShape shape in Shapes)
|
||||||
{
|
{
|
||||||
shape.Dispose();
|
shape?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
Shapes.Clear();
|
Shapes.Clear();
|
||||||
|
|
Loading…
Reference in a new issue