diff --git a/src/button.js b/src/button.js index c1f711bd..22db888b 100644 --- a/src/button.js +++ b/src/button.js @@ -176,7 +176,7 @@ $.Button = function( options ) { clickDistThreshold: this.clickDistThreshold, enterHandler: function( tracker, eventData ) { - if ( eventData.buttonDownElement ) { + if ( eventData.insideElementPressed ) { inTo( _this, $.ButtonState.DOWN ); _this.raiseEvent( "onEnter", _this ); } else if ( !eventData.buttonDownAny ) { @@ -191,7 +191,7 @@ $.Button = function( options ) { exitHandler: function( tracker, eventData ) { outTo( _this, $.ButtonState.GROUP ); - if ( eventData.buttonDownElement ) { + if ( eventData.insideElementPressed ) { _this.raiseEvent( "onExit", _this ); } }, @@ -207,10 +207,10 @@ $.Button = function( options ) { }, releaseHandler: function( tracker, eventData ) { - if ( eventData.insideElementPress && eventData.insideElementRelease ) { + if ( eventData.insideElementPressed && eventData.insideElementRelease ) { outTo( _this, $.ButtonState.HOVER ); _this.raiseEvent( "onRelease", _this ); - } else if ( eventData.insideElementPress ) { + } else if ( eventData.insideElementPressed ) { outTo( _this, $.ButtonState.GROUP ); } else { inTo( _this, $.ButtonState.HOVER ); diff --git a/src/buttongroup.js b/src/buttongroup.js index da0f658a..db133352 100644 --- a/src/buttongroup.js +++ b/src/buttongroup.js @@ -93,7 +93,7 @@ $.ButtonGroup = function( options ) { }, exitHandler: function ( tracker, eventData ) { var i; - if ( !eventData.buttonDownElement ) { + if ( !eventData.insideElementPressed ) { for ( i = 0; i < _this.buttons.length; i++ ) { _this.buttons[ i ].notifyGroupExit(); } diff --git a/src/mousetracker.js b/src/mousetracker.js index 7c063521..015ee8b8 100644 --- a/src/mousetracker.js +++ b/src/mousetracker.js @@ -138,7 +138,7 @@ * Are we currently tracking mouse events. * @property {Boolean} capturing * Are we curruently capturing mouse events. - * @property {Boolean} buttonDownElement + * @property {Boolean} insideElementPressed * True if the left mouse button is currently being pressed and was * initiated inside the tracked element, otherwise false. * @property {Boolean} insideElement @@ -151,32 +151,32 @@ * Position of last mouse down */ THIS[this.hash] = { - mouseover: function ( event ) { onMouseOver( _this, event, false ); }, - mouseout: function ( event ) { onMouseOut( _this, event, false ); }, - mousedown: function ( event ) { onMouseDown( _this, event ); }, - mouseup: function ( event ) { onMouseUp( _this, event, false ); }, - mousemove: function ( event ) { onMouseMove( _this, event ); }, - click: function ( event ) { onMouseClick( _this, event ); }, - DOMMouseScroll: function ( event ) { onMouseWheelSpin( _this, event, false ); }, - mousewheel: function ( event ) { onMouseWheelSpin( _this, event, false ); }, - mouseupie: function ( event ) { onMouseUpIE( _this, event ); }, - mousemoveie: function ( event ) { onMouseMoveIE( _this, event ); }, - mouseupwindow: function ( event ) { onMouseUpWindow( _this, event ); }, - mousemovewindow: function ( event ) { onMouseMoveWindow( _this, event, false ); }, - touchstart: function ( event ) { onTouchStart( _this, event ); }, - touchmove: function ( event ) { onTouchMove( _this, event ); }, - touchend: function ( event ) { onTouchEnd( _this, event ); }, - keypress: function ( event ) { onKeyPress( _this, event ); }, - focus: function ( event ) { onFocus( _this, event ); }, - blur: function ( event ) { onBlur( _this, event ); }, - tracking: false, - capturing: false, - buttonDownElement: false, - insideElement: false, - lastPoint: null, - lastMouseDownTime: null, - lastMouseDownPoint: null, - lastPinchDelta: 0 + mouseover: function ( event ) { onMouseOver( _this, event, false ); }, + mouseout: function ( event ) { onMouseOut( _this, event, false ); }, + mousedown: function ( event ) { onMouseDown( _this, event ); }, + mouseup: function ( event ) { onMouseUp( _this, event, false ); }, + mousemove: function ( event ) { onMouseMove( _this, event ); }, + click: function ( event ) { onMouseClick( _this, event ); }, + DOMMouseScroll: function ( event ) { onMouseWheelSpin( _this, event, false ); }, + mousewheel: function ( event ) { onMouseWheelSpin( _this, event, false ); }, + mouseupie: function ( event ) { onMouseUpIE( _this, event ); }, + mousemovecapturedie: function ( event ) { onMouseMoveCapturedIE( _this, event ); }, + mouseupcaptured: function ( event ) { onMouseUpCaptured( _this, event ); }, + mousemovecaptured: function ( event ) { onMouseMoveCaptured( _this, event, false ); }, + touchstart: function ( event ) { onTouchStart( _this, event ); }, + touchmove: function ( event ) { onTouchMove( _this, event ); }, + touchend: function ( event ) { onTouchEnd( _this, event ); }, + keypress: function ( event ) { onKeyPress( _this, event ); }, + focus: function ( event ) { onFocus( _this, event ); }, + blur: function ( event ) { onBlur( _this, event ); }, + tracking: false, + capturing: false, + insideElementPressed: false, + insideElement: false, + lastPoint: null, + lastMouseDownTime: null, + lastMouseDownPoint: null, + lastPinchDelta: 0 }; }; @@ -227,7 +227,7 @@ * @param {Object} eventData * { * position: The position of the event relative to the tracked element. - * buttonDownElement: True if the left mouse button is currently being pressed and was initiated inside the tracked element, otherwise false. + * insideElementPressed: True if the left mouse button is currently being pressed and was initiated inside the tracked element, otherwise false. * buttonDownAny: Was the button down anywhere in the screen during the event. * isTouchEvent: True if the original event is a touch event, otherwise false. * originalEvent: The original event object. @@ -245,7 +245,7 @@ * @param {Object} eventData * { * position: The position of the event relative to the tracked element. - * buttonDownElement: True if the left mouse button is currently being pressed and was initiated inside the tracked element, otherwise false. + * insideElementPressed: True if the left mouse button is currently being pressed and was initiated inside the tracked element, otherwise false. * buttonDownAny: Was the button down anywhere in the screen during the event. * isTouchEvent: True if the original event is a touch event, otherwise false. * originalEvent: The original event object. @@ -279,7 +279,7 @@ * @param {Object} eventData * { * position: The position of the event relative to the tracked element. - * insideElementPress: True if the left mouse button is currently being pressed and was initiated inside the tracked element, otherwise false. + * insideElementPressed: True if the left mouse button is currently being pressed and was initiated inside the tracked element, otherwise false. * insideElementRelease: Was the mouse still inside the tracked element when the button was released. * isTouchEvent: True if the original event is a touch event, otherwise false. * originalEvent: The original event object. @@ -507,20 +507,20 @@ $.addEvent( tracker.element, "mousemove", - delegate.mousemoveie, + delegate.mousemovecapturedie, true ); } else { $.addEvent( window, "mouseup", - delegate.mouseupwindow, + delegate.mouseupcaptured, true ); $.addEvent( window, "mousemove", - delegate.mousemovewindow, + delegate.mousemovecaptured, true ); } @@ -542,7 +542,7 @@ $.removeEvent( tracker.element, "mousemove", - delegate.mousemoveie, + delegate.mousemovecapturedie, true ); $.removeEvent( @@ -561,13 +561,13 @@ $.removeEvent( window, "mousemove", - delegate.mousemovewindow, + delegate.mousemovecaptured, true ); $.removeEvent( window, "mouseup", - delegate.mouseupwindow, + delegate.mouseupcaptured, true ); } @@ -671,7 +671,7 @@ var delegate = THIS[tracker.hash], propagate; - isTouch = ( isTouch !== undefined ) ? isTouch : false; + isTouch = isTouch || false; event = $.getEvent( event ); @@ -702,7 +702,7 @@ tracker, { position: getMouseRelative( event, tracker.element ), - buttonDownElement: delegate.buttonDownElement, + insideElementPressed: delegate.insideElementPressed, buttonDownAny: IS_BUTTON_DOWN, isTouchEvent: isTouch, originalEvent: event, @@ -724,7 +724,7 @@ var delegate = THIS[tracker.hash], propagate; - isTouch = ( isTouch !== undefined ) ? isTouch : false; + isTouch = isTouch || false; event = $.getEvent( event ); @@ -756,7 +756,7 @@ tracker, { position: getMouseRelative( event, tracker.element ), - buttonDownElement: delegate.buttonDownElement, + insideElementPressed: delegate.insideElementPressed, buttonDownAny: IS_BUTTON_DOWN, isTouchEvent: isTouch, originalEvent: event, @@ -779,7 +779,7 @@ var delegate = THIS[tracker.hash], propagate; - isTouch = ( isTouch !== undefined ) ? isTouch : false; + isTouch = isTouch || false; event = $.getEvent( event ); @@ -787,7 +787,7 @@ return; } - delegate.buttonDownElement = true; + delegate.insideElementPressed = true; delegate.lastPoint = getMouseAbsolute( event ); delegate.lastMouseDownPoint = delegate.lastPoint; @@ -842,7 +842,7 @@ THIS[tracker.hash].lastTouch = event.touches[0]; onMouseOver( tracker, event, true ); - // call with no capture as the onMouseMoveWindow will + // call with no capture as the onMouseMoveCaptured will // be triggered by onTouchMove onMouseDown( tracker, event, true, true ); } @@ -871,13 +871,13 @@ */ function onMouseUp( tracker, event, isTouch ) { var delegate = THIS[tracker.hash], - //were we inside the tracked element when we were pressed - insideElementPress = delegate.buttonDownElement, - //are we still inside the tracked element when we released + //were we inside the tracked element when we were pressed + insideElementPressed = delegate.insideElementPressed, + //are we still inside the tracked element when we released insideElementRelease = delegate.insideElement, propagate; - isTouch = ( isTouch !== undefined ) ? isTouch : false; + isTouch = isTouch || false; event = $.getEvent( event ); @@ -885,14 +885,14 @@ return; } - delegate.buttonDownElement = false; + delegate.insideElementPressed = false; if ( tracker.releaseHandler ) { propagate = tracker.releaseHandler( tracker, { position: getMouseRelative( event, tracker.element ), - insideElementPress: insideElementPress, + insideElementPressed: insideElementPressed, insideElementRelease: insideElementRelease, isTouchEvent: isTouch, originalEvent: event, @@ -904,7 +904,7 @@ } } - if ( insideElementPress && insideElementRelease ) { + if ( insideElementPressed && insideElementRelease ) { handleMouseClick( tracker, event ); } } @@ -924,7 +924,7 @@ // call with no release, as the mouse events are // not registered in onTouchStart - onMouseUpWindow( tracker, event, true, true ); + onMouseUpCaptured( tracker, event, true, true ); onMouseOut( tracker, event, true ); } if ( event.touches.length + event.changedTouches.length == 2 ) { @@ -983,8 +983,8 @@ * @private * @inner */ - function onMouseUpWindow( tracker, event, noRelease, isTouch ) { - isTouch = ( isTouch !== undefined ) ? isTouch : false; + function onMouseUpCaptured( tracker, event, noRelease, isTouch ) { + isTouch = isTouch || false; if ( !THIS[tracker.hash].insideElement ) { onMouseUp( tracker, event, isTouch ); @@ -1041,7 +1041,7 @@ var nDelta = 0, propagate; - isTouch = ( isTouch !== undefined ) ? isTouch : false; + isTouch = isTouch || false; if ( !event ) { // For IE, access the global (window) event object event = window.event; @@ -1122,13 +1122,13 @@ * @private * @inner */ - function onMouseMoveWindow( tracker, event, isTouch ) { + function onMouseMoveCaptured( tracker, event, isTouch ) { var delegate = THIS[tracker.hash], delta, propagate, point; - isTouch = ( isTouch !== undefined ) ? isTouch : false; + isTouch = isTouch || false; event = $.getEvent( event ); point = getMouseAbsolute( event ); @@ -1173,7 +1173,7 @@ event.changedTouches.length === 1 && THIS[tracker.hash].lastTouch.identifier === event.touches[0].identifier ) { - onMouseMoveWindow( tracker, event, true ); + onMouseMoveCaptured( tracker, event, true ); } else if ( event.touches.length === 2 ) { @@ -1188,8 +1188,7 @@ //$.console.debug( "pinch delta : " + pinchDelta + " | previous : " + THIS[ tracker.hash ].lastPinchDelta); // Adjust the original event enough to simulate a mouse wheel scroll - event.shift = false; - event.shiftKey = false; + event.shiftKey = event.shiftKey || false; event.pageX = THIS[tracker.hash].pinchMidpoint.x; event.pageY = THIS[tracker.hash].pinchMidpoint.y; event.detail = ( THIS[tracker.hash].lastPinchDelta > pinchDelta ) ? 1 : -1; @@ -1211,10 +1210,10 @@ * @private * @inner */ - function onMouseMoveIE( tracker, event ) { + function onMouseMoveCapturedIE( tracker, event ) { var i; for ( i = 0; i < CAPTURING.length; i++ ) { - onMouseMoveWindow( CAPTURING[i], event, false ); + onMouseMoveCaptured( CAPTURING[i], event, false ); } $.stopEvent( event ); @@ -1233,7 +1232,7 @@ * @inner */ function getMouseRelative( event, element ) { - var mouse = $.getMousePosition( event ), + var mouse = $.getMousePosition( event ), offset = $.getElementOffset( element ); return mouse.minus( offset ); diff --git a/src/navigator.js b/src/navigator.js index f1999831..7197776a 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -308,8 +308,8 @@ function onCanvasDrag( tracker, eventData ) { * @inner * @function */ -function onCanvasRelease( tracker, eventData ) {//position, insideElementPress, insideElementRelease - if ( eventData.insideElementPress && this.viewer.viewport ) { +function onCanvasRelease( tracker, eventData ) { + if ( eventData.insideElementPressed && this.viewer.viewport ) { this.viewer.viewport.applyConstraints(); } } diff --git a/src/openseadragon.js b/src/openseadragon.js index b28cc507..79e683c6 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -707,6 +707,8 @@ window.OpenSeadragon = window.OpenSeadragon || function( options ){ * @returns {Point} - the position of the upper left corner of the element adjusted for current page and/or element scroll. */ getElementOffset: function( element ) { + element = $.getElement( element ); + var doc = element && element.ownerDocument, docElement, win, diff --git a/src/referencestrip.js b/src/referencestrip.js index 4f8f2bf0..94662764 100644 --- a/src/referencestrip.js +++ b/src/referencestrip.js @@ -193,11 +193,11 @@ $.ReferenceStrip = function ( options ) { tracker.dragging = $.now(); }, releaseHandler: function ( tracker, eventData ) { - var id = tracker.element.id, - page = Number( id.split( '-' )[2] ), - now = $.now(); + var id = tracker.element.id, + page = Number( id.split( '-' )[2] ), + now = $.now(); - if ( eventData.insideElementPress && + if ( eventData.insideElementPressed && eventData.insideElementRelease && tracker.dragging && ( now - tracker.dragging ) < tracker.clickTimeThreshold ) { @@ -222,12 +222,12 @@ $.ReferenceStrip = function ( options ) { $.extend( $.ReferenceStrip.prototype, $.EventHandler.prototype, $.Viewer.prototype, { setFocus: function ( page ) { - var element = $.getElement( this.element.id + '-' + page ), - viewerSize = $.getElementSize( this.viewer.canvas ), - scrollWidth = Number( this.element.style.width.replace( 'px', '' ) ), + var element = $.getElement( this.element.id + '-' + page ), + viewerSize = $.getElementSize( this.viewer.canvas ), + scrollWidth = Number( this.element.style.width.replace( 'px', '' ) ), scrollHeight = Number( this.element.style.height.replace( 'px', '' ) ), - offsetLeft = -Number( this.element.style.marginLeft.replace( 'px', '' ) ), - offsetTop = -Number( this.element.style.marginTop.replace( 'px', '' ) ), + offsetLeft = -Number( this.element.style.marginLeft.replace( 'px', '' ) ), + offsetTop = -Number( this.element.style.marginTop.replace( 'px', '' ) ), offset; if ( this.currentSelected !== element ) { @@ -291,11 +291,11 @@ $.extend( $.ReferenceStrip.prototype, $.EventHandler.prototype, $.Viewer.prototy */ function onStripDrag( tracker, eventData ) { - var offsetLeft = Number( this.element.style.marginLeft.replace( 'px', '' ) ), - offsetTop = Number( this.element.style.marginTop.replace( 'px', '' ) ), - scrollWidth = Number( this.element.style.width.replace( 'px', '' ) ), + var offsetLeft = Number( this.element.style.marginLeft.replace( 'px', '' ) ), + offsetTop = Number( this.element.style.marginTop.replace( 'px', '' ) ), + scrollWidth = Number( this.element.style.width.replace( 'px', '' ) ), scrollHeight = Number( this.element.style.height.replace( 'px', '' ) ), - viewerSize = $.getElementSize( this.viewer.canvas ); + viewerSize = $.getElementSize( this.viewer.canvas ); this.dragging = true; if ( this.element ) { if ( 'horizontal' == this.scroll ) { @@ -340,11 +340,11 @@ function onStripDrag( tracker, eventData ) { * @function */ function onStripScroll( tracker, eventData ) { - var offsetLeft = Number( this.element.style.marginLeft.replace( 'px', '' ) ), - offsetTop = Number( this.element.style.marginTop.replace( 'px', '' ) ), - scrollWidth = Number( this.element.style.width.replace( 'px', '' ) ), + var offsetLeft = Number( this.element.style.marginLeft.replace( 'px', '' ) ), + offsetTop = Number( this.element.style.marginTop.replace( 'px', '' ) ), + scrollWidth = Number( this.element.style.width.replace( 'px', '' ) ), scrollHeight = Number( this.element.style.height.replace( 'px', '' ) ), - viewerSize = $.getElementSize( this.viewer.canvas ); + viewerSize = $.getElementSize( this.viewer.canvas ); if ( this.element ) { if ( 'horizontal' == this.scroll ) { if ( eventData.scroll > 0 ) { diff --git a/src/viewer.js b/src/viewer.js index 88df1d81..c7995d9b 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -1472,13 +1472,13 @@ function onCanvasDrag( tracker, eventData ) { } function onCanvasRelease( tracker, eventData ) { - if ( eventData.insideElementPress && this.viewport ) { + if ( eventData.insideElementPressed && this.viewport ) { this.viewport.applyConstraints(); } this.raiseEvent( 'canvas-release', { tracker: tracker, position: eventData.position, - insideElementPress: eventData.insideElementPress, + insideElementPressed: eventData.insideElementPressed, insideElementRelease: eventData.insideElementRelease }); } @@ -1504,7 +1504,7 @@ function onCanvasScroll( tracker, eventData ) { } function onContainerExit( tracker, eventData ) { - if ( !eventData.buttonDownElement ) { + if ( !eventData.insideElementPressed ) { THIS[ this.hash ].mouseInside = false; if ( !THIS[ this.hash ].animating ) { beginControlsAutoHide( this ); @@ -1513,7 +1513,7 @@ function onContainerExit( tracker, eventData ) { this.raiseEvent( 'container-exit', { tracker: tracker, position: eventData.position, - buttonDownElement: eventData.buttonDownElement, + insideElementPressed: eventData.insideElementPressed, buttonDownAny: eventData.buttonDownAny }); } @@ -1528,7 +1528,7 @@ function onContainerRelease( tracker, eventData ) { this.raiseEvent( 'container-release', { tracker: tracker, position: eventData.position, - insideElementPress: eventData.insideElementPress, + insideElementPressed: eventData.insideElementPressed, insideElementRelease: eventData.insideElementRelease }); } @@ -1539,7 +1539,7 @@ function onContainerEnter( tracker, eventData ) { this.raiseEvent( 'container-enter', { tracker: tracker, position: eventData.position, - buttonDownElement: eventData.buttonDownElement, + insideElementPressed: eventData.insideElementPressed, buttonDownAny: eventData.buttonDownAny }); }