From d5031835daf7a18c406d19f49676371755c69692 Mon Sep 17 00:00:00 2001 From: kinto Date: Tue, 14 Mar 2017 16:08:52 +0100 Subject: [PATCH 1/2] manage preventDefaultAction flag inside the canvas-click viewer event. Trigger the canvas-click event before default click zoom happens on the viewer --- src/viewer.js | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/src/viewer.js b/src/viewer.js index cea725a3..69c4b133 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -2463,16 +2463,15 @@ function onCanvasClick( event ) { this.canvas.focus(); } - if ( !event.preventDefaultAction && this.viewport && event.quick ) { - gestureSettings = this.gestureSettingsByDeviceType( event.pointerType ); - if ( gestureSettings.clickToZoom ) { - this.viewport.zoomBy( - event.shift ? 1.0 / this.zoomPerClick : this.zoomPerClick, - this.viewport.pointFromPixel( event.position, true ) - ); - this.viewport.applyConstraints(); - } - } + var canvasClickEventArgs = { + tracker: event.eventSource, + position: event.position, + quick: event.quick, + shift: event.shift, + originalEvent: event.originalEvent, + preventDefaultAction: event.preventDefaultAction + }; + /** * Raised when a mouse press/release or touch/remove occurs on the {@link OpenSeadragon.Viewer#canvas} element. * @@ -2487,13 +2486,18 @@ function onCanvasClick( event ) { * @property {Object} originalEvent - The original DOM event. * @property {?Object} userData - Arbitrary subscriber-defined object. */ - this.raiseEvent( 'canvas-click', { - tracker: event.eventSource, - position: event.position, - quick: event.quick, - shift: event.shift, - originalEvent: event.originalEvent - }); + this.raiseEvent( 'canvas-click', canvasClickEventArgs); + + if ( !canvasClickEventArgs.preventDefaultAction && this.viewport && event.quick ) { + gestureSettings = this.gestureSettingsByDeviceType( event.pointerType ); + if ( gestureSettings.clickToZoom ) { + this.viewport.zoomBy( + event.shift ? 1.0 / this.zoomPerClick : this.zoomPerClick, + this.viewport.pointFromPixel( event.position, true ) + ); + this.viewport.applyConstraints(); + } + } } function onCanvasDblClick( event ) { From bc5e235822646b5da318f9307da11b4a54304d17 Mon Sep 17 00:00:00 2001 From: kinto Date: Tue, 14 Mar 2017 19:23:07 +0100 Subject: [PATCH 2/2] Add comment instructions for using preventDefaultAction parameter in canvas-click event --- src/viewer.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/viewer.js b/src/viewer.js index 69c4b133..d3e68534 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -2484,6 +2484,7 @@ function onCanvasClick( event ) { * @property {Boolean} quick - True only if the clickDistThreshold and clickTimeThreshold are both passed. Useful for differentiating between clicks and drags. * @property {Boolean} shift - True if the shift key was pressed during this event. * @property {Object} originalEvent - The original DOM event. + * @property {Boolean} preventDefaultAction - Set to true to prevent default click to zoom behaviour. Default: false. * @property {?Object} userData - Arbitrary subscriber-defined object. */ this.raiseEvent( 'canvas-click', canvasClickEventArgs);