diff --git a/changelog.txt b/changelog.txt index c0c8a3eb..73dc4c76 100644 --- a/changelog.txt +++ b/changelog.txt @@ -57,7 +57,8 @@ OPENSEADRAGON CHANGELOG * Viewer.innerTracker.scrollHandler: preventDefaultAction == true prevents viewer zooming on mousewheel/pinch * Fixed: IE8 error with custom buttons - "Object doesn't support this action" (#279) * Support IIIF servers that don't report tile dimensions (#286) -* Added a static 'version' property to OpenSeadragon. Useful for plugins that require specific OpenSeadragon versions. +* Added an autoResize option. Default is true. When set to false, the viewer takes no action when its container element is resized. (#291) +* Added a static 'version' property to OpenSeadragon. Useful for plugins that require specific OpenSeadragon versions. (#292) 0.9.131: diff --git a/src/openseadragon.js b/src/openseadragon.js index 96b177de..e9c0f388 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -224,6 +224,9 @@ * image though it is less effective visually if the HTML5 Canvas is not * availble on the viewing device. * + * @property {Boolean} [autoResize=true] + * Set to false to prevent polling for viewer size changes. Useful for providing custom resize behavior. + * * @property {Number} [pixelsPerWheelLine=40] * For pixel-resolution scrolling devices, the number of pixels equal to one scroll line. * @@ -691,6 +694,7 @@ window.OpenSeadragon = window.OpenSeadragon || function( options ){ minZoomImageRatio: 0.9, //-> closer to 0 allows zoom out to infinity maxZoomPixelRatio: 1.1, //-> higher allows 'over zoom' into pixels pixelsPerWheelLine: 40, + autoResize: true, //DEFAULT CONTROL SETTINGS showSequenceControl: true, //SEQUENCE diff --git a/src/viewer.js b/src/viewer.js index 72ebc1bb..7d9e755b 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -1896,14 +1896,16 @@ function updateOnce( viewer ) { //viewer.profiler.beginUpdate(); - containerSize = _getSafeElemSize( viewer.container ); - if ( !containerSize.equals( THIS[ viewer.hash ].prevContainerSize ) ) { - // maintain image position - var oldBounds = viewer.viewport.getBounds(); - var oldCenter = viewer.viewport.getCenter(); - resizeViewportAndRecenter(viewer, containerSize, oldBounds, oldCenter); - THIS[ viewer.hash ].prevContainerSize = containerSize; - THIS[ viewer.hash ].forceRedraw = true; + if ( viewer.autoResize ) { + containerSize = _getSafeElemSize( viewer.container ); + if ( !containerSize.equals( THIS[ viewer.hash ].prevContainerSize ) ) { + // maintain image position + var oldBounds = viewer.viewport.getBounds(); + var oldCenter = viewer.viewport.getCenter(); + resizeViewportAndRecenter(viewer, containerSize, oldBounds, oldCenter); + THIS[ viewer.hash ].prevContainerSize = containerSize; + THIS[ viewer.hash ].forceRedraw = true; + } } animated = viewer.viewport.update(); diff --git a/src/viewport.js b/src/viewport.js index 7acfe5b2..65230f4a 100644 --- a/src/viewport.js +++ b/src/viewport.js @@ -674,14 +674,15 @@ $.Viewport.prototype = /** @lends OpenSeadragon.Viewport.prototype */{ resize: function( newContainerSize, maintain ) { var oldBounds = this.getBounds(), newBounds = oldBounds, - widthDeltaFactor = newContainerSize.x / this.containerSize.x; + widthDeltaFactor; this.containerSize = new $.Point( newContainerSize.x, newContainerSize.y ); - if (maintain) { + if ( maintain ) { + widthDeltaFactor = newContainerSize.x / this.containerSize.x; newBounds.width = oldBounds.width * widthDeltaFactor; newBounds.height = newBounds.width / this.getAspectRatio(); }