aboutsummaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorMichał Gołębiowski-Owczarek <m.goleb@gmail.com>2025-03-21 00:03:17 +0100
committerGitHub <noreply@github.com>2025-03-21 00:03:17 +0100
commit44de3d325c1ac0c4a841deff0ec03265a0b670f7 (patch)
tree1e2d6714843aead988ec134ecace8a75e01cba24 /ui
parent6843ced12e4051aefbee47cf87fa79794737eb8a (diff)
downloadjquery-ui-44de3d325c1ac0c4a841deff0ec03265a0b670f7.tar.gz
jquery-ui-44de3d325c1ac0c4a841deff0ec03265a0b670f7.zip
Spinner: Prevent double mousewheel & wheel event handling
As of gh-2338, if one has loaded the jQuery MouseWheel plugin, the `mousewheel` handler would fire the `wheel` one, but the `wheel` one would also run in response to the native `wheel` event, resulting in double the distance handled by the spinner. To prevent the issue, only fire the `wheel` handler from inside the `mousewheel` on if the event was triggered by jQuery - jQuery will not care that the underlying event is `wheel` and will only fire handlers for `mousewheel`. Also, add an iframe test using jQuery MouseWheel to not affect all the other tests. Plus, migrate from `QUnit.reset` to `QUnit.done` (see qunitjs/qunit#354). Closes gh-2342 Ref gh-2338
Diffstat (limited to 'ui')
-rw-r--r--ui/widgets/spinner.js7
1 files changed, 7 insertions, 0 deletions
diff --git a/ui/widgets/spinner.js b/ui/widgets/spinner.js
index 4fb41d7bb..d4034b458 100644
--- a/ui/widgets/spinner.js
+++ b/ui/widgets/spinner.js
@@ -164,6 +164,13 @@ $.widget( "ui.spinner", {
// event. The `delta` parameter is provided by the jQuery Mousewheel
// plugin if one is loaded.
mousewheel: function( event, delta ) {
+ if ( !event.isTrigger ) {
+
+ // If this is not a trigger call, the `wheel` handler will
+ // fire as well, let's not duplicate it.
+ return;
+ }
+
var wheelEvent = $.Event( event );
wheelEvent.type = "wheel";
if ( delta ) {