MouseTracker Original Events in Handlers

Misc name changes, indentation/whitespace fixes.
Still TODO: Fix documentation, evaluate presence of key handler in a
mouse tracker, evaluate whether isTouchEvent flag should be in all
eventData objects or not.
This commit is contained in:
Mark Salsbery 2013-09-09 14:27:58 -07:00
parent d60224b615
commit 13415b36f3
7 changed files with 93 additions and 92 deletions

View File

@ -176,7 +176,7 @@ $.Button = function( options ) {
clickDistThreshold: this.clickDistThreshold, clickDistThreshold: this.clickDistThreshold,
enterHandler: function( tracker, eventData ) { enterHandler: function( tracker, eventData ) {
if ( eventData.buttonDownElement ) { if ( eventData.insideElementPressed ) {
inTo( _this, $.ButtonState.DOWN ); inTo( _this, $.ButtonState.DOWN );
_this.raiseEvent( "onEnter", _this ); _this.raiseEvent( "onEnter", _this );
} else if ( !eventData.buttonDownAny ) { } else if ( !eventData.buttonDownAny ) {
@ -191,7 +191,7 @@ $.Button = function( options ) {
exitHandler: function( tracker, eventData ) { exitHandler: function( tracker, eventData ) {
outTo( _this, $.ButtonState.GROUP ); outTo( _this, $.ButtonState.GROUP );
if ( eventData.buttonDownElement ) { if ( eventData.insideElementPressed ) {
_this.raiseEvent( "onExit", _this ); _this.raiseEvent( "onExit", _this );
} }
}, },
@ -207,10 +207,10 @@ $.Button = function( options ) {
}, },
releaseHandler: function( tracker, eventData ) { releaseHandler: function( tracker, eventData ) {
if ( eventData.insideElementPress && eventData.insideElementRelease ) { if ( eventData.insideElementPressed && eventData.insideElementRelease ) {
outTo( _this, $.ButtonState.HOVER ); outTo( _this, $.ButtonState.HOVER );
_this.raiseEvent( "onRelease", _this ); _this.raiseEvent( "onRelease", _this );
} else if ( eventData.insideElementPress ) { } else if ( eventData.insideElementPressed ) {
outTo( _this, $.ButtonState.GROUP ); outTo( _this, $.ButtonState.GROUP );
} else { } else {
inTo( _this, $.ButtonState.HOVER ); inTo( _this, $.ButtonState.HOVER );

View File

@ -93,7 +93,7 @@ $.ButtonGroup = function( options ) {
}, },
exitHandler: function ( tracker, eventData ) { exitHandler: function ( tracker, eventData ) {
var i; var i;
if ( !eventData.buttonDownElement ) { if ( !eventData.insideElementPressed ) {
for ( i = 0; i < _this.buttons.length; i++ ) { for ( i = 0; i < _this.buttons.length; i++ ) {
_this.buttons[ i ].notifyGroupExit(); _this.buttons[ i ].notifyGroupExit();
} }

View File

@ -138,7 +138,7 @@
* Are we currently tracking mouse events. * Are we currently tracking mouse events.
* @property {Boolean} capturing * @property {Boolean} capturing
* Are we curruently capturing mouse events. * Are we curruently capturing mouse events.
* @property {Boolean} buttonDownElement * @property {Boolean} insideElementPressed
* True if the left mouse button is currently being pressed and was * True if the left mouse button is currently being pressed and was
* initiated inside the tracked element, otherwise false. * initiated inside the tracked element, otherwise false.
* @property {Boolean} insideElement * @property {Boolean} insideElement
@ -160,9 +160,9 @@
DOMMouseScroll: function ( event ) { onMouseWheelSpin( _this, event, false ); }, DOMMouseScroll: function ( event ) { onMouseWheelSpin( _this, event, false ); },
mousewheel: function ( event ) { onMouseWheelSpin( _this, event, false ); }, mousewheel: function ( event ) { onMouseWheelSpin( _this, event, false ); },
mouseupie: function ( event ) { onMouseUpIE( _this, event ); }, mouseupie: function ( event ) { onMouseUpIE( _this, event ); },
mousemoveie: function ( event ) { onMouseMoveIE( _this, event ); }, mousemovecapturedie: function ( event ) { onMouseMoveCapturedIE( _this, event ); },
mouseupwindow: function ( event ) { onMouseUpWindow( _this, event ); }, mouseupcaptured: function ( event ) { onMouseUpCaptured( _this, event ); },
mousemovewindow: function ( event ) { onMouseMoveWindow( _this, event, false ); }, mousemovecaptured: function ( event ) { onMouseMoveCaptured( _this, event, false ); },
touchstart: function ( event ) { onTouchStart( _this, event ); }, touchstart: function ( event ) { onTouchStart( _this, event ); },
touchmove: function ( event ) { onTouchMove( _this, event ); }, touchmove: function ( event ) { onTouchMove( _this, event ); },
touchend: function ( event ) { onTouchEnd( _this, event ); }, touchend: function ( event ) { onTouchEnd( _this, event ); },
@ -171,7 +171,7 @@
blur: function ( event ) { onBlur( _this, event ); }, blur: function ( event ) { onBlur( _this, event ); },
tracking: false, tracking: false,
capturing: false, capturing: false,
buttonDownElement: false, insideElementPressed: false,
insideElement: false, insideElement: false,
lastPoint: null, lastPoint: null,
lastMouseDownTime: null, lastMouseDownTime: null,
@ -227,7 +227,7 @@
* @param {Object} eventData * @param {Object} eventData
* { * {
* position: The position of the event relative to the tracked element. * 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. * buttonDownAny: Was the button down anywhere in the screen during the event.
* isTouchEvent: True if the original event is a touch event, otherwise false. * isTouchEvent: True if the original event is a touch event, otherwise false.
* originalEvent: The original event object. * originalEvent: The original event object.
@ -245,7 +245,7 @@
* @param {Object} eventData * @param {Object} eventData
* { * {
* position: The position of the event relative to the tracked element. * 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. * buttonDownAny: Was the button down anywhere in the screen during the event.
* isTouchEvent: True if the original event is a touch event, otherwise false. * isTouchEvent: True if the original event is a touch event, otherwise false.
* originalEvent: The original event object. * originalEvent: The original event object.
@ -279,7 +279,7 @@
* @param {Object} eventData * @param {Object} eventData
* { * {
* position: The position of the event relative to the tracked element. * 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. * 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. * isTouchEvent: True if the original event is a touch event, otherwise false.
* originalEvent: The original event object. * originalEvent: The original event object.
@ -507,20 +507,20 @@
$.addEvent( $.addEvent(
tracker.element, tracker.element,
"mousemove", "mousemove",
delegate.mousemoveie, delegate.mousemovecapturedie,
true true
); );
} else { } else {
$.addEvent( $.addEvent(
window, window,
"mouseup", "mouseup",
delegate.mouseupwindow, delegate.mouseupcaptured,
true true
); );
$.addEvent( $.addEvent(
window, window,
"mousemove", "mousemove",
delegate.mousemovewindow, delegate.mousemovecaptured,
true true
); );
} }
@ -542,7 +542,7 @@
$.removeEvent( $.removeEvent(
tracker.element, tracker.element,
"mousemove", "mousemove",
delegate.mousemoveie, delegate.mousemovecapturedie,
true true
); );
$.removeEvent( $.removeEvent(
@ -561,13 +561,13 @@
$.removeEvent( $.removeEvent(
window, window,
"mousemove", "mousemove",
delegate.mousemovewindow, delegate.mousemovecaptured,
true true
); );
$.removeEvent( $.removeEvent(
window, window,
"mouseup", "mouseup",
delegate.mouseupwindow, delegate.mouseupcaptured,
true true
); );
} }
@ -671,7 +671,7 @@
var delegate = THIS[tracker.hash], var delegate = THIS[tracker.hash],
propagate; propagate;
isTouch = ( isTouch !== undefined ) ? isTouch : false; isTouch = isTouch || false;
event = $.getEvent( event ); event = $.getEvent( event );
@ -702,7 +702,7 @@
tracker, tracker,
{ {
position: getMouseRelative( event, tracker.element ), position: getMouseRelative( event, tracker.element ),
buttonDownElement: delegate.buttonDownElement, insideElementPressed: delegate.insideElementPressed,
buttonDownAny: IS_BUTTON_DOWN, buttonDownAny: IS_BUTTON_DOWN,
isTouchEvent: isTouch, isTouchEvent: isTouch,
originalEvent: event, originalEvent: event,
@ -724,7 +724,7 @@
var delegate = THIS[tracker.hash], var delegate = THIS[tracker.hash],
propagate; propagate;
isTouch = ( isTouch !== undefined ) ? isTouch : false; isTouch = isTouch || false;
event = $.getEvent( event ); event = $.getEvent( event );
@ -756,7 +756,7 @@
tracker, tracker,
{ {
position: getMouseRelative( event, tracker.element ), position: getMouseRelative( event, tracker.element ),
buttonDownElement: delegate.buttonDownElement, insideElementPressed: delegate.insideElementPressed,
buttonDownAny: IS_BUTTON_DOWN, buttonDownAny: IS_BUTTON_DOWN,
isTouchEvent: isTouch, isTouchEvent: isTouch,
originalEvent: event, originalEvent: event,
@ -779,7 +779,7 @@
var delegate = THIS[tracker.hash], var delegate = THIS[tracker.hash],
propagate; propagate;
isTouch = ( isTouch !== undefined ) ? isTouch : false; isTouch = isTouch || false;
event = $.getEvent( event ); event = $.getEvent( event );
@ -787,7 +787,7 @@
return; return;
} }
delegate.buttonDownElement = true; delegate.insideElementPressed = true;
delegate.lastPoint = getMouseAbsolute( event ); delegate.lastPoint = getMouseAbsolute( event );
delegate.lastMouseDownPoint = delegate.lastPoint; delegate.lastMouseDownPoint = delegate.lastPoint;
@ -842,7 +842,7 @@
THIS[tracker.hash].lastTouch = event.touches[0]; THIS[tracker.hash].lastTouch = event.touches[0];
onMouseOver( tracker, event, true ); onMouseOver( tracker, event, true );
// call with no capture as the onMouseMoveWindow will // call with no capture as the onMouseMoveCaptured will
// be triggered by onTouchMove // be triggered by onTouchMove
onMouseDown( tracker, event, true, true ); onMouseDown( tracker, event, true, true );
} }
@ -872,12 +872,12 @@
function onMouseUp( tracker, event, isTouch ) { function onMouseUp( tracker, event, isTouch ) {
var delegate = THIS[tracker.hash], var delegate = THIS[tracker.hash],
//were we inside the tracked element when we were pressed //were we inside the tracked element when we were pressed
insideElementPress = delegate.buttonDownElement, insideElementPressed = delegate.insideElementPressed,
//are we still inside the tracked element when we released //are we still inside the tracked element when we released
insideElementRelease = delegate.insideElement, insideElementRelease = delegate.insideElement,
propagate; propagate;
isTouch = ( isTouch !== undefined ) ? isTouch : false; isTouch = isTouch || false;
event = $.getEvent( event ); event = $.getEvent( event );
@ -885,14 +885,14 @@
return; return;
} }
delegate.buttonDownElement = false; delegate.insideElementPressed = false;
if ( tracker.releaseHandler ) { if ( tracker.releaseHandler ) {
propagate = tracker.releaseHandler( propagate = tracker.releaseHandler(
tracker, tracker,
{ {
position: getMouseRelative( event, tracker.element ), position: getMouseRelative( event, tracker.element ),
insideElementPress: insideElementPress, insideElementPressed: insideElementPressed,
insideElementRelease: insideElementRelease, insideElementRelease: insideElementRelease,
isTouchEvent: isTouch, isTouchEvent: isTouch,
originalEvent: event, originalEvent: event,
@ -904,7 +904,7 @@
} }
} }
if ( insideElementPress && insideElementRelease ) { if ( insideElementPressed && insideElementRelease ) {
handleMouseClick( tracker, event ); handleMouseClick( tracker, event );
} }
} }
@ -924,7 +924,7 @@
// call with no release, as the mouse events are // call with no release, as the mouse events are
// not registered in onTouchStart // not registered in onTouchStart
onMouseUpWindow( tracker, event, true, true ); onMouseUpCaptured( tracker, event, true, true );
onMouseOut( tracker, event, true ); onMouseOut( tracker, event, true );
} }
if ( event.touches.length + event.changedTouches.length == 2 ) { if ( event.touches.length + event.changedTouches.length == 2 ) {
@ -983,8 +983,8 @@
* @private * @private
* @inner * @inner
*/ */
function onMouseUpWindow( tracker, event, noRelease, isTouch ) { function onMouseUpCaptured( tracker, event, noRelease, isTouch ) {
isTouch = ( isTouch !== undefined ) ? isTouch : false; isTouch = isTouch || false;
if ( !THIS[tracker.hash].insideElement ) { if ( !THIS[tracker.hash].insideElement ) {
onMouseUp( tracker, event, isTouch ); onMouseUp( tracker, event, isTouch );
@ -1041,7 +1041,7 @@
var nDelta = 0, var nDelta = 0,
propagate; propagate;
isTouch = ( isTouch !== undefined ) ? isTouch : false; isTouch = isTouch || false;
if ( !event ) { // For IE, access the global (window) event object if ( !event ) { // For IE, access the global (window) event object
event = window.event; event = window.event;
@ -1122,13 +1122,13 @@
* @private * @private
* @inner * @inner
*/ */
function onMouseMoveWindow( tracker, event, isTouch ) { function onMouseMoveCaptured( tracker, event, isTouch ) {
var delegate = THIS[tracker.hash], var delegate = THIS[tracker.hash],
delta, delta,
propagate, propagate,
point; point;
isTouch = ( isTouch !== undefined ) ? isTouch : false; isTouch = isTouch || false;
event = $.getEvent( event ); event = $.getEvent( event );
point = getMouseAbsolute( event ); point = getMouseAbsolute( event );
@ -1173,7 +1173,7 @@
event.changedTouches.length === 1 && event.changedTouches.length === 1 &&
THIS[tracker.hash].lastTouch.identifier === event.touches[0].identifier ) { THIS[tracker.hash].lastTouch.identifier === event.touches[0].identifier ) {
onMouseMoveWindow( tracker, event, true ); onMouseMoveCaptured( tracker, event, true );
} else if ( event.touches.length === 2 ) { } else if ( event.touches.length === 2 ) {
@ -1188,8 +1188,7 @@
//$.console.debug( "pinch delta : " + pinchDelta + " | previous : " + THIS[ tracker.hash ].lastPinchDelta); //$.console.debug( "pinch delta : " + pinchDelta + " | previous : " + THIS[ tracker.hash ].lastPinchDelta);
// Adjust the original event enough to simulate a mouse wheel scroll // Adjust the original event enough to simulate a mouse wheel scroll
event.shift = false; event.shiftKey = event.shiftKey || false;
event.shiftKey = false;
event.pageX = THIS[tracker.hash].pinchMidpoint.x; event.pageX = THIS[tracker.hash].pinchMidpoint.x;
event.pageY = THIS[tracker.hash].pinchMidpoint.y; event.pageY = THIS[tracker.hash].pinchMidpoint.y;
event.detail = ( THIS[tracker.hash].lastPinchDelta > pinchDelta ) ? 1 : -1; event.detail = ( THIS[tracker.hash].lastPinchDelta > pinchDelta ) ? 1 : -1;
@ -1211,10 +1210,10 @@
* @private * @private
* @inner * @inner
*/ */
function onMouseMoveIE( tracker, event ) { function onMouseMoveCapturedIE( tracker, event ) {
var i; var i;
for ( i = 0; i < CAPTURING.length; i++ ) { for ( i = 0; i < CAPTURING.length; i++ ) {
onMouseMoveWindow( CAPTURING[i], event, false ); onMouseMoveCaptured( CAPTURING[i], event, false );
} }
$.stopEvent( event ); $.stopEvent( event );

View File

@ -308,8 +308,8 @@ function onCanvasDrag( tracker, eventData ) {
* @inner * @inner
* @function * @function
*/ */
function onCanvasRelease( tracker, eventData ) {//position, insideElementPress, insideElementRelease function onCanvasRelease( tracker, eventData ) {
if ( eventData.insideElementPress && this.viewer.viewport ) { if ( eventData.insideElementPressed && this.viewer.viewport ) {
this.viewer.viewport.applyConstraints(); this.viewer.viewport.applyConstraints();
} }
} }

View File

@ -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. * @returns {Point} - the position of the upper left corner of the element adjusted for current page and/or element scroll.
*/ */
getElementOffset: function( element ) { getElementOffset: function( element ) {
element = $.getElement( element );
var doc = element && element.ownerDocument, var doc = element && element.ownerDocument,
docElement, docElement,
win, win,

View File

@ -197,7 +197,7 @@ $.ReferenceStrip = function ( options ) {
page = Number( id.split( '-' )[2] ), page = Number( id.split( '-' )[2] ),
now = $.now(); now = $.now();
if ( eventData.insideElementPress && if ( eventData.insideElementPressed &&
eventData.insideElementRelease && eventData.insideElementRelease &&
tracker.dragging && tracker.dragging &&
( now - tracker.dragging ) < tracker.clickTimeThreshold ) { ( now - tracker.dragging ) < tracker.clickTimeThreshold ) {

View File

@ -1472,13 +1472,13 @@ function onCanvasDrag( tracker, eventData ) {
} }
function onCanvasRelease( tracker, eventData ) { function onCanvasRelease( tracker, eventData ) {
if ( eventData.insideElementPress && this.viewport ) { if ( eventData.insideElementPressed && this.viewport ) {
this.viewport.applyConstraints(); this.viewport.applyConstraints();
} }
this.raiseEvent( 'canvas-release', { this.raiseEvent( 'canvas-release', {
tracker: tracker, tracker: tracker,
position: eventData.position, position: eventData.position,
insideElementPress: eventData.insideElementPress, insideElementPressed: eventData.insideElementPressed,
insideElementRelease: eventData.insideElementRelease insideElementRelease: eventData.insideElementRelease
}); });
} }
@ -1504,7 +1504,7 @@ function onCanvasScroll( tracker, eventData ) {
} }
function onContainerExit( tracker, eventData ) { function onContainerExit( tracker, eventData ) {
if ( !eventData.buttonDownElement ) { if ( !eventData.insideElementPressed ) {
THIS[ this.hash ].mouseInside = false; THIS[ this.hash ].mouseInside = false;
if ( !THIS[ this.hash ].animating ) { if ( !THIS[ this.hash ].animating ) {
beginControlsAutoHide( this ); beginControlsAutoHide( this );
@ -1513,7 +1513,7 @@ function onContainerExit( tracker, eventData ) {
this.raiseEvent( 'container-exit', { this.raiseEvent( 'container-exit', {
tracker: tracker, tracker: tracker,
position: eventData.position, position: eventData.position,
buttonDownElement: eventData.buttonDownElement, insideElementPressed: eventData.insideElementPressed,
buttonDownAny: eventData.buttonDownAny buttonDownAny: eventData.buttonDownAny
}); });
} }
@ -1528,7 +1528,7 @@ function onContainerRelease( tracker, eventData ) {
this.raiseEvent( 'container-release', { this.raiseEvent( 'container-release', {
tracker: tracker, tracker: tracker,
position: eventData.position, position: eventData.position,
insideElementPress: eventData.insideElementPress, insideElementPressed: eventData.insideElementPressed,
insideElementRelease: eventData.insideElementRelease insideElementRelease: eventData.insideElementRelease
}); });
} }
@ -1539,7 +1539,7 @@ function onContainerEnter( tracker, eventData ) {
this.raiseEvent( 'container-enter', { this.raiseEvent( 'container-enter', {
tracker: tracker, tracker: tracker,
position: eventData.position, position: eventData.position,
buttonDownElement: eventData.buttonDownElement, insideElementPressed: eventData.insideElementPressed,
buttonDownAny: eventData.buttonDownAny buttonDownAny: eventData.buttonDownAny
}); });
} }