diff --git a/changelog.txt b/changelog.txt index 9e696ade..af8a9d18 100644 --- a/changelog.txt +++ b/changelog.txt @@ -9,6 +9,7 @@ OPENSEADRAGON CHANGELOG * Keyboard handling is now done in the viewer rather than navigator (#46) * Additional navigator fixes (#46) * Fixed an error in EventHandler.removeHandler() (#48) +* You can now choose to have previous and next buttons wrap using the config.navPrevNextWrap. 0.9.127: diff --git a/src/openseadragon.js b/src/openseadragon.js index 83f417fa..ab899aa0 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -588,6 +588,7 @@ window.OpenSeadragon = window.OpenSeadragon || function( options ){ DOWN: 'next_pressed.png' } }, + navPrevNextWrap: false, //DEVELOPER SETTINGS debugMode: false, diff --git a/src/viewer.js b/src/viewer.js index a44717ee..7c7c4722 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -345,6 +345,10 @@ $.Viewer = function( options ) { beginControlsAutoHide( _this ); } ); // initial fade out + if(this.navPrevNextWrap){ + this.previousButton.enable(); + } + }; $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype, { @@ -1021,7 +1025,9 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype, if( this.nextButton ){ if( ( this.tileSources.length - 1 ) === page ){ //Disable next button - this.nextButton.disable(); + if(!this.navPrevNextWrap){ + this.nextButton.disable(); + } } else { this.nextButton.enable(); } @@ -1031,7 +1037,9 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype, //Enable previous button this.previousButton.enable(); } else { - this.previousButton.disable(); + if(!this.navPrevNextWrap){ + this.previousButton.disable(); + } } } @@ -1625,12 +1633,18 @@ function onFullPage() { function onPrevious(){ var previous = THIS[ this.hash ].sequence - 1; + if(this.navPrevNextWrap && previous < 0){ + previous += this.tileSources.length; + } this.goToPage( previous ); } function onNext(){ var next = THIS[ this.hash ].sequence + 1; + if(this.navPrevNextWrap && next >= this.tileSources.length){ + next = 0; + } this.goToPage( next ); }