diff options
author | Pierre Ossman <ossman@cendio.se> | 2020-06-10 12:55:27 +0200 |
---|---|---|
committer | Samuel Mannehed <samuel@cendio.se> | 2020-06-12 09:18:46 +0200 |
commit | 77c32d164d19c42d0bb03992cf85899532d80de1 (patch) | |
tree | 1c95ad62f137b3215d7f3ff29e11db6d726b64a3 | |
parent | 07a69954b17ee1fecaf39be876b68a55ad07ba1b (diff) | |
download | novnc-77c32d164d19c42d0bb03992cf85899532d80de1.tar.gz |
Remove delayed wheel timer
This isn't really expected behaviour from a user, i.e. that an extremely
small wheel movement still gives a large scroll event in the remote application.
-rw-r--r-- | core/input/mouse.js | 22 | ||||
-rw-r--r-- | tests/test.mouse.js | 22 |
2 files changed, 0 insertions, 44 deletions
diff --git a/core/input/mouse.js b/core/input/mouse.js index 82ea335..4d01566 100644 --- a/core/input/mouse.js +++ b/core/input/mouse.js @@ -8,7 +8,6 @@ import * as Log from '../util/logging.js'; import { setCapture, stopEvent, getPointerEvent } from '../util/events.js'; const WHEEL_STEP = 10; // Delta threshold for a mouse wheel step -const WHEEL_STEP_TIMEOUT = 50; // ms const WHEEL_LINE_HEIGHT = 19; export default class Mouse { @@ -16,8 +15,6 @@ export default class Mouse { this._target = target || document; this._pos = null; - this._wheelStepXTimer = null; - this._wheelStepYTimer = null; this._accumulatedWheelDeltaX = 0; this._accumulatedWheelDeltaY = 0; @@ -102,16 +99,7 @@ export default class Mouse { this._accumulatedWheelDeltaY = 0; } - _resetWheelStepTimers() { - window.clearTimeout(this._wheelStepXTimer); - window.clearTimeout(this._wheelStepYTimer); - this._wheelStepXTimer = null; - this._wheelStepYTimer = null; - } - _handleMouseWheel(e) { - this._resetWheelStepTimers(); - this._updateMousePosition(e); let dX = e.deltaX; @@ -136,17 +124,9 @@ export default class Mouse { // after a timeout. if (Math.abs(this._accumulatedWheelDeltaX) > WHEEL_STEP) { this._generateWheelStepX(); - } else { - this._wheelStepXTimer = - window.setTimeout(this._generateWheelStepX.bind(this), - WHEEL_STEP_TIMEOUT); } if (Math.abs(this._accumulatedWheelDeltaY) > WHEEL_STEP) { this._generateWheelStepY(); - } else { - this._wheelStepYTimer = - window.setTimeout(this._generateWheelStepY.bind(this), - WHEEL_STEP_TIMEOUT); } stopEvent(e); @@ -214,8 +194,6 @@ export default class Mouse { ungrab() { const t = this._target; - this._resetWheelStepTimers(); - t.removeEventListener('mousedown', this._eventHandlers.mousedown); t.removeEventListener('mouseup', this._eventHandlers.mouseup); t.removeEventListener('mousemove', this._eventHandlers.mousemove); diff --git a/tests/test.mouse.js b/tests/test.mouse.js index 8830c4b..9e06ff2 100644 --- a/tests/test.mouse.js +++ b/tests/test.mouse.js @@ -90,9 +90,6 @@ describe('Mouse Event Handling', function () { describe('Accumulate mouse wheel events with small delta', function () { - beforeEach(function () { this.clock = sinon.useFakeTimers(); }); - afterEach(function () { this.clock.restore(); }); - it('should accumulate wheel events if small enough', function () { const mouse = new Mouse(target); mouse.onmousebutton = sinon.spy(); @@ -100,7 +97,6 @@ describe('Mouse Event Handling', function () { mouse._handleMouseWheel(mouseevent( 'mousewheel', { clientX: 18, clientY: 40, deltaX: 4, deltaY: 0, deltaMode: 0 })); - this.clock.tick(10); mouse._handleMouseWheel(mouseevent( 'mousewheel', { clientX: 18, clientY: 40, deltaX: 4, deltaY: 0, deltaMode: 0 })); @@ -108,14 +104,12 @@ describe('Mouse Event Handling', function () { // threshold is 10 expect(mouse._accumulatedWheelDeltaX).to.be.equal(8); - this.clock.tick(10); mouse._handleMouseWheel(mouseevent( 'mousewheel', { clientX: 18, clientY: 40, deltaX: 4, deltaY: 0, deltaMode: 0 })); expect(mouse.onmousebutton).to.have.callCount(2); // mouse down and up - this.clock.tick(10); mouse._handleMouseWheel(mouseevent( 'mousewheel', { clientX: 18, clientY: 40, deltaX: 4, deltaY: 9, deltaMode: 0 })); @@ -133,11 +127,9 @@ describe('Mouse Event Handling', function () { mouse._handleMouseWheel(mouseevent( 'mousewheel', { clientX: 18, clientY: 40, deltaX: 11, deltaY: 0, deltaMode: 0 })); - this.clock.tick(10); mouse._handleMouseWheel(mouseevent( 'mousewheel', { clientX: 18, clientY: 40, deltaX: 0, deltaY: 70, deltaMode: 0 })); - this.clock.tick(10); mouse._handleMouseWheel(mouseevent( 'mousewheel', { clientX: 18, clientY: 40, deltaX: 400, deltaY: 400, deltaMode: 0 })); @@ -145,18 +137,6 @@ describe('Mouse Event Handling', function () { expect(mouse.onmousebutton).to.have.callCount(8); // mouse down and up }); - it('should send even small wheel events after a timeout', function () { - const mouse = new Mouse(target); - mouse.onmousebutton = sinon.spy(); - - mouse._handleMouseWheel(mouseevent( - 'mousewheel', { clientX: 18, clientY: 40, - deltaX: 1, deltaY: 0, deltaMode: 0 })); - this.clock.tick(51); // timeout on 50 ms - - expect(mouse.onmousebutton).to.have.callCount(2); // mouse down and up - }); - it('should account for non-zero deltaMode', function () { const mouse = new Mouse(target); mouse.onmousebutton = sinon.spy(); @@ -165,8 +145,6 @@ describe('Mouse Event Handling', function () { 'mousewheel', { clientX: 18, clientY: 40, deltaX: 0, deltaY: 2, deltaMode: 1 })); - this.clock.tick(10); - mouse._handleMouseWheel(mouseevent( 'mousewheel', { clientX: 18, clientY: 40, deltaX: 1, deltaY: 0, deltaMode: 2 })); |