summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2020-06-10 12:55:27 +0200
committerSamuel Mannehed <samuel@cendio.se>2020-06-12 09:18:46 +0200
commit77c32d164d19c42d0bb03992cf85899532d80de1 (patch)
tree1c95ad62f137b3215d7f3ff29e11db6d726b64a3
parent07a69954b17ee1fecaf39be876b68a55ad07ba1b (diff)
downloadnovnc-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.js22
-rw-r--r--tests/test.mouse.js22
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 }));