P5-1511: Fix for losing image position after navigating back in browser
This commit is contained in:
+16
-8
@@ -84,14 +84,17 @@ function Viewport(canvas) {
|
||||
_rect.addTo(canvas).center().setCoords();
|
||||
|
||||
if (cropData) {
|
||||
var viewportBounds = _rect.getInsideBoundingRect();
|
||||
|
||||
// Calculate the new position after screenresize and when the
|
||||
// image already has been cropped to a certain position.
|
||||
var left = _rect.left + _rect.strokeWidth - (canvas.getImage().width * canvas.getImage().scaleX * cropData.x);
|
||||
var top = _rect.top + _rect.strokeWidth - (canvas.getImage().height * canvas.getImage().scaleY * cropData.y);
|
||||
var left = viewportBounds.left - (canvas.getImage().width * canvas.getImage().scaleX * cropData.x);
|
||||
var top = viewportBounds.top - (canvas.getImage().height * canvas.getImage().scaleY * cropData.y);
|
||||
|
||||
canvas.getImage().set({ left: left, top: top }).setCoords();
|
||||
} else {
|
||||
canvas.getImage().center().setCoords();
|
||||
canvas.getImageData().setCropData();
|
||||
}
|
||||
|
||||
canvas.getImage().drag.enable(calcMinMaxBoundsForRect(_rect.getInsideBoundingRect(), canvas.getImage()));
|
||||
@@ -112,7 +115,7 @@ function Viewport(canvas) {
|
||||
this.canvas = canvas;
|
||||
|
||||
this.getBounds = function () {
|
||||
return _rect.getInsideBoundingRect();
|
||||
return _rect ? _rect.getInsideBoundingRect() : null;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -132,20 +135,24 @@ function Viewport(canvas) {
|
||||
* @return {Viewport}
|
||||
*/
|
||||
this.set = function (width, height, units) {
|
||||
var oldData = _data;
|
||||
if (!width || !height) {
|
||||
return this;
|
||||
}
|
||||
|
||||
_data = util.calcCrop(canvas.getImage(), width, height, units);
|
||||
|
||||
var keepCropping = (oldData && !util.isAspectChanged(oldData.dim.width, oldData.dim.height, width, height));
|
||||
if (keepCropping) {
|
||||
canvas.getImageData().setCropData();
|
||||
var cropData = canvas.getImageData().getCropData();
|
||||
var isAspectTheSame = !!(cropData && !util.isAspectChanged(cropData.viewportWidth, cropData.viewportHeight, width, height));
|
||||
|
||||
if (!isAspectTheSame) {
|
||||
canvas.getImageData().removeCropData();
|
||||
}
|
||||
|
||||
apply();
|
||||
this.getGores().reset();
|
||||
this.getRulers().reset();
|
||||
|
||||
if (canvas.getImage().__cropped && !keepCropping) {
|
||||
if (canvas.getImage().__cropped && !isAspectTheSame) {
|
||||
canvas.getApertures().setTransparent(true);
|
||||
|
||||
// Trigger event to tell the image needs to be dragged.
|
||||
@@ -154,6 +161,7 @@ function Viewport(canvas) {
|
||||
|
||||
canvas.getButtonMenu().bringToFront();
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user