Fixed undo/redo bug

This commit is contained in:
Jaex 2023-12-27 12:20:03 +03:00
parent 69e95870de
commit 692a9e6b0d
3 changed files with 6 additions and 8 deletions

View file

@ -60,13 +60,13 @@ private ImageEditorMemento GetMementoFromCanvas()
{
List<BaseShape> shapes = shapeManager.Shapes.Select(x => x.Duplicate()).ToList();
Bitmap canvas = (Bitmap)shapeManager.Form.Canvas.Clone();
return new ImageEditorMemento(shapes, canvas);
return new ImageEditorMemento(shapes, shapeManager.Form.CanvasRectangle, canvas);
}
private ImageEditorMemento GetMementoFromShapes()
{
List<BaseShape> shapes = shapeManager.Shapes.Select(x => x.Duplicate()).ToList();
return new ImageEditorMemento(shapes);
return new ImageEditorMemento(shapes, shapeManager.Form.CanvasRectangle);
}
public void CreateCanvasMemento()

View file

@ -32,16 +32,13 @@ namespace ShareX.ScreenCaptureLib
internal class ImageEditorMemento : IDisposable
{
public List<BaseShape> Shapes { get; private set; }
public RectangleF CanvasRectangle { get; private set; }
public Bitmap Canvas { get; private set; }
public ImageEditorMemento(List<BaseShape> shapes)
{
Shapes = shapes;
}
public ImageEditorMemento(List<BaseShape> shapes, Bitmap canvas)
public ImageEditorMemento(List<BaseShape> shapes, RectangleF canvasRectangle, Bitmap canvas = null)
{
Shapes = shapes;
CanvasRectangle = canvasRectangle;
Canvas = canvas;
}

View file

@ -1572,6 +1572,7 @@ public void RestoreState(ImageEditorMemento memento)
ClearTools();
DeselectCurrentShape();
MoveAll(Form.CanvasRectangle.X - memento.CanvasRectangle.X, Form.CanvasRectangle.Y - memento.CanvasRectangle.Y);
OnImageModified();
UpdateMenu();
}