diff options
author | Michał Gołębiowski-Owczarek <m.goleb@gmail.com> | 2025-03-21 00:03:17 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-21 00:03:17 +0100 |
commit | 44de3d325c1ac0c4a841deff0ec03265a0b670f7 (patch) | |
tree | 1e2d6714843aead988ec134ecace8a75e01cba24 /ui | |
parent | 6843ced12e4051aefbee47cf87fa79794737eb8a (diff) | |
download | jquery-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.js | 7 |
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 ) { |