diff --git a/src/openseadragon.js b/src/openseadragon.js index 461f9d22..0c6df401 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -252,6 +252,9 @@ * @property {Boolean} [autoResize=true] * Set to false to prevent polling for viewer size changes. Useful for providing custom resize behavior. * + * @property {Boolean} [preserveImageSizeOnResize=false] + * Set to true to have the image size preserved when the viewer is resized. This requires autoResize=false. + * * @property {Number} [pixelsPerWheelLine=40] * For pixel-resolution scrolling devices, the number of pixels equal to one scroll line. * @@ -987,6 +990,7 @@ window.OpenSeadragon = window.OpenSeadragon || function( options ){ maxZoomPixelRatio: 1.1, //-> higher allows 'over zoom' into pixels pixelsPerWheelLine: 40, autoResize: true, + preserveImageSizeOnResize: false, // requires autoResize=false //DEFAULT CONTROL SETTINGS showSequenceControl: true, //SEQUENCE diff --git a/src/viewer.js b/src/viewer.js index efe1ea36..50dd8831 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -408,6 +408,7 @@ $.Viewer = function( options ) { width: this.navigatorWidth, height: this.navigatorHeight, autoResize: this.navigatorAutoResize, + preserveImageSizeOnResize: this.preserveImageSizeOnResize, prefixUrl: this.prefixUrl, viewer: this, navigatorRotate: this.navigatorRotate, @@ -2836,7 +2837,7 @@ function updateOnce( viewer ) { THIS[ viewer.hash ].forceRedraw = true; } } - else { + else if ( viewer.preserveImageSizeOnResize ) { containerSize = _getSafeElemSize( viewer.container ); if ( !containerSize.equals( THIS[ viewer.hash ].prevContainerSize ) ) { var prevContainerSize = THIS[ viewer.hash ].prevContainerSize; @@ -2851,7 +2852,7 @@ function updateOnce( viewer ) { bounds.height += viewportDiff.y; bounds.x -= (viewportDiff.x / 2); bounds.y -= (viewportDiff.y / 2); - viewer.viewport.fitBounds(bounds, true); + viewer.viewport.fitBoundsWithConstraints(bounds, true); viewer.forceRedraw(); THIS[ viewer.hash ].prevContainerSize = containerSize;