Changed hasGestureHandlers to be a function to better work with dynamically added handlers

Previously, we were setting hasGestureHandlers once in the constructor and never re-assigning it after the initial creation. This resulted in MouseTrackers created without gesture handlers never updating its hasGestureHandlers values, even when gesture handlers were dynamically added after creation. By changing this to a function, our MouseTrackers' hasGestureHandlers value should always be in the proper state, even if handlers are dynamically created or removed.
This commit is contained in:
Jessica R. 2025-01-01 22:38:48 -07:00 committed by GitHub
parent 56d0d982da
commit 865c3884b2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -277,11 +277,6 @@
sentDragEvent: false
};
this.hasGestureHandlers = !!( this.pressHandler || this.nonPrimaryPressHandler ||
this.releaseHandler || this.nonPrimaryReleaseHandler ||
this.clickHandler || this.dblClickHandler ||
this.dragHandler || this.dragEndHandler ||
this.pinchHandler );
this.hasScrollHandler = !!this.scrollHandler;
if ( $.MouseTracker.havePointerEvents ) {
@ -391,6 +386,23 @@
return count;
},
/**
* Do we currently have any assigned gesture handlers.
* @function
* @returns {Boolean} Do we currently have any assigned gesture handlers.
*/
hasGestureHandlers: function () {
return !!(this.pressHandler ||
this.nonPrimaryPressHandler ||
this.releaseHandler ||
this.nonPrimaryReleaseHandler ||
this.clickHandler ||
this.dblClickHandler ||
this.dragHandler ||
this.dragEndHandler ||
this.pinchHandler);
},
/**
* Implement or assign implementation to these handlers during or after
* calling the constructor.
@ -2836,7 +2848,7 @@
eventInfo.isStoppable = true;
eventInfo.isCancelable = true;
eventInfo.preventDefault = false;
eventInfo.preventGesture = !tracker.hasGestureHandlers;
eventInfo.preventGesture = !tracker.hasGestureHandlers();
eventInfo.stopPropagation = false;
break;
case 'pointerover':
@ -2854,15 +2866,15 @@
case 'pointerdown':
eventInfo.isStoppable = true;
eventInfo.isCancelable = true;
eventInfo.preventDefault = false; // updatePointerDown() may set true (tracker.hasGestureHandlers)
eventInfo.preventGesture = !tracker.hasGestureHandlers;
eventInfo.preventDefault = false; // updatePointerDown() may set true (tracker.hasGestureHandlers())
eventInfo.preventGesture = !tracker.hasGestureHandlers();
eventInfo.stopPropagation = false;
break;
case 'pointerup':
eventInfo.isStoppable = true;
eventInfo.isCancelable = true;
eventInfo.preventDefault = false;
eventInfo.preventGesture = !tracker.hasGestureHandlers;
eventInfo.preventGesture = !tracker.hasGestureHandlers();
eventInfo.stopPropagation = false;
break;
case 'wheel':