From 865c3884b2a56fc58a75093e04f34895cace4dd9 Mon Sep 17 00:00:00 2001 From: "Jessica R." <60241371+Seafret@users.noreply.github.com> Date: Wed, 1 Jan 2025 22:38:48 -0700 Subject: [PATCH] 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. --- src/mousetracker.js | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/mousetracker.js b/src/mousetracker.js index e56cb609..d64ef0b5 100644 --- a/src/mousetracker.js +++ b/src/mousetracker.js @@ -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':