diff --git a/ShareX.ScreenCaptureLib/Helpers/ImageEditorHistory.cs b/ShareX.ScreenCaptureLib/Helpers/ImageEditorHistory.cs index ea912d2c0..3ad421d70 100644 --- a/ShareX.ScreenCaptureLib/Helpers/ImageEditorHistory.cs +++ b/ShareX.ScreenCaptureLib/Helpers/ImageEditorHistory.cs @@ -60,13 +60,13 @@ private ImageEditorMemento GetMementoFromCanvas() { List 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 shapes = shapeManager.Shapes.Select(x => x.Duplicate()).ToList(); - return new ImageEditorMemento(shapes); + return new ImageEditorMemento(shapes, shapeManager.Form.CanvasRectangle); } public void CreateCanvasMemento() diff --git a/ShareX.ScreenCaptureLib/Helpers/ImageEditorMemento.cs b/ShareX.ScreenCaptureLib/Helpers/ImageEditorMemento.cs index 3f740f1bc..66aef8839 100644 --- a/ShareX.ScreenCaptureLib/Helpers/ImageEditorMemento.cs +++ b/ShareX.ScreenCaptureLib/Helpers/ImageEditorMemento.cs @@ -32,16 +32,13 @@ namespace ShareX.ScreenCaptureLib internal class ImageEditorMemento : IDisposable { public List Shapes { get; private set; } + public RectangleF CanvasRectangle { get; private set; } public Bitmap Canvas { get; private set; } - public ImageEditorMemento(List shapes) - { - Shapes = shapes; - } - - public ImageEditorMemento(List shapes, Bitmap canvas) + public ImageEditorMemento(List shapes, RectangleF canvasRectangle, Bitmap canvas = null) { Shapes = shapes; + CanvasRectangle = canvasRectangle; Canvas = canvas; } diff --git a/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs b/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs index 7300d8523..5cfa158d0 100644 --- a/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs +++ b/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs @@ -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(); }