Skip to content

Commit

Permalink
GUAC-1967: Remove duplicate wheel handler registrations.
Browse files Browse the repository at this point in the history
Modern-day browsers abide the standardized wheel event (typed WheelEvent),
however to support older browsers the legacy DOMMouseScroll (FireFox) and
mousewheel (all others) events are also being registered.

However modern browsers support both the wheel event as well as the legacy,
which results in the wheel handler being registered multiple times. This
results in the wheel handler firing twice instead of once, causing excessive
scrolling.

This change separates the event registration such that either the modern or the
legacy events are registered, and not both.
  • Loading branch information
neandrake committed Jul 11, 2024
1 parent 9a8a5f3 commit ece69ee
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions guacamole-common-js/src/main/webapp/modules/Mouse.js
Original file line number Diff line number Diff line change
Expand Up @@ -258,9 +258,16 @@ Guacamole.Mouse = function Mouse(element) {

}

element.addEventListener('DOMMouseScroll', mousewheel_handler, false);
element.addEventListener('mousewheel', mousewheel_handler, false);
element.addEventListener('wheel', mousewheel_handler, false);
if (window.WheelEvent) {
// All modern browsers support wheel events.
element.addEventListener('wheel', mousewheel_handler, false);
}
else {
// Legacy FireFox wheel events.
element.addEventListener('DOMMouseScroll', mousewheel_handler, false);
// Legacy Chrome/IE/other wheel events.
element.addEventListener('mousewheel', mousewheel_handler, false);
}

/**
* Whether the browser supports CSS3 cursor styling, including hotspot
Expand Down

0 comments on commit ece69ee

Please sign in to comment.