Browse Source

Fixed negative offset

flabbet 3 years ago
parent
commit
e63c2cb567
1 changed files with 6 additions and 0 deletions
  1. 6 0
      PixiEditor/Models/Undo/StorageBasedChange.cs

+ 6 - 0
PixiEditor/Models/Undo/StorageBasedChange.cs

@@ -342,12 +342,18 @@ namespace PixiEditor.Models.Undo
             int targetWidth = widthBigger ? chunk.Width : layer.Width;
             int targetHeight = heightBigger ? chunk.Height : layer.Height;
 
+            targetWidth = Math.Clamp(targetWidth, 0, layerData.MaxWidth);
+            targetHeight = Math.Clamp(targetHeight, 0, layerData.MaxHeight);
+
             int offsetDiffX = layerData.OffsetX - layer.OffsetX;
             int offsetDiffY = layerData.OffsetY - layer.OffsetY;
 
             int targetOffsetX = widthBigger ? layerData.SerializedRect.Left : layerData.OffsetX;
             int targetOffsetY = heightBigger ? layerData.SerializedRect.Top : layerData.OffsetY;
 
+            targetOffsetX = Math.Max(0, targetOffsetX);
+            targetOffsetY = Math.Max(0, targetOffsetY);
+
             Surface targetSizeSurface = new Surface(targetWidth, targetHeight);
             using var foundLayerSnapshot = layer.LayerBitmap.SkiaSurface.Snapshot();
             targetSizeSurface.SkiaSurface.Canvas.DrawImage(