mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 13:17:41 +00:00
GUAC-1244: Added timeout to mouse scroll events to catch and issue minor scrolling to remote
This commit is contained in:
@@ -39,6 +39,12 @@ Guacamole.Mouse = function(element) {
|
|||||||
*/
|
*/
|
||||||
var guac_mouse = this;
|
var guac_mouse = this;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Timeout before a single mouse scroll happens.
|
||||||
|
* @type Number
|
||||||
|
*/
|
||||||
|
var mouse_scroll_timeout = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The number of mousemove events to require before re-enabling mouse
|
* The number of mousemove events to require before re-enabling mouse
|
||||||
* event handling after receiving a touch event.
|
* event handling after receiving a touch event.
|
||||||
@@ -273,38 +279,46 @@ Guacamole.Mouse = function(element) {
|
|||||||
// Update overall delta
|
// Update overall delta
|
||||||
scroll_delta += delta;
|
scroll_delta += delta;
|
||||||
|
|
||||||
// Up
|
if (mouse_scroll_timeout == null) {
|
||||||
while (scroll_delta <= -guac_mouse.scrollThreshold) {
|
// send actual mouse scroll event after a threshold
|
||||||
|
mouse_scroll_timeout = window.setTimeout(function () {
|
||||||
|
|
||||||
if (guac_mouse.onmousedown) {
|
// Up
|
||||||
guac_mouse.currentState.up = true;
|
if (scroll_delta < 0) {
|
||||||
guac_mouse.onmousedown(guac_mouse.currentState);
|
do {
|
||||||
}
|
if (guac_mouse.onmousedown) {
|
||||||
|
guac_mouse.currentState.up = true;
|
||||||
|
guac_mouse.onmousedown(guac_mouse.currentState);
|
||||||
|
}
|
||||||
|
|
||||||
if (guac_mouse.onmouseup) {
|
if (guac_mouse.onmouseup) {
|
||||||
guac_mouse.currentState.up = false;
|
guac_mouse.currentState.up = false;
|
||||||
guac_mouse.onmouseup(guac_mouse.currentState);
|
guac_mouse.onmouseup(guac_mouse.currentState);
|
||||||
}
|
}
|
||||||
|
|
||||||
scroll_delta += guac_mouse.scrollThreshold;
|
scroll_delta += guac_mouse.scrollThreshold;
|
||||||
|
} while (scroll_delta < 0);
|
||||||
|
}
|
||||||
|
// Down
|
||||||
|
else if (scroll_delta > 0) {
|
||||||
|
do {
|
||||||
|
if (guac_mouse.onmousedown) {
|
||||||
|
guac_mouse.currentState.down = true;
|
||||||
|
guac_mouse.onmousedown(guac_mouse.currentState);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
if (guac_mouse.onmouseup) {
|
||||||
|
guac_mouse.currentState.down = false;
|
||||||
// Down
|
guac_mouse.onmouseup(guac_mouse.currentState);
|
||||||
while (scroll_delta >= guac_mouse.scrollThreshold) {
|
}
|
||||||
|
|
||||||
if (guac_mouse.onmousedown) {
|
|
||||||
guac_mouse.currentState.down = true;
|
|
||||||
guac_mouse.onmousedown(guac_mouse.currentState);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (guac_mouse.onmouseup) {
|
|
||||||
guac_mouse.currentState.down = false;
|
|
||||||
guac_mouse.onmouseup(guac_mouse.currentState);
|
|
||||||
}
|
|
||||||
|
|
||||||
scroll_delta -= guac_mouse.scrollThreshold;
|
|
||||||
|
|
||||||
|
scroll_delta -= guac_mouse.scrollThreshold;
|
||||||
|
} while (scroll_delta > 0);
|
||||||
|
}
|
||||||
|
scroll_delta = 0;
|
||||||
|
window.clearTimeout(mouse_scroll_timeout);
|
||||||
|
mouse_scroll_timeout = null;
|
||||||
|
}, 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
cancelEvent(e);
|
cancelEvent(e);
|
||||||
|
Reference in New Issue
Block a user