Merge pull request #209 from glyptodon/flangelo-mouse-scroll

GUAC-1244: Ensure small scroll events are handled
This commit is contained in:
James Muehlner
2015-07-07 20:56:33 -07:00

View File

@@ -49,17 +49,17 @@ Guacamole.Mouse = function(element) {
* The minimum amount of pixels scrolled required for a single scroll button * The minimum amount of pixels scrolled required for a single scroll button
* click. * click.
*/ */
this.scrollThreshold = 120; this.scrollThreshold = 53;
/** /**
* The number of pixels to scroll per line. * The number of pixels to scroll per line.
*/ */
this.PIXELS_PER_LINE = 40; this.PIXELS_PER_LINE = 18;
/** /**
* The number of pixels to scroll per page. * The number of pixels to scroll per page.
*/ */
this.PIXELS_PER_PAGE = 640; this.PIXELS_PER_PAGE = this.PIXELS_PER_LINE * 16;
/** /**
* The current mouse state. The properties of this state are updated when * The current mouse state. The properties of this state are updated when
@@ -274,36 +274,52 @@ Guacamole.Mouse = function(element) {
scroll_delta += delta; scroll_delta += delta;
// Up // Up
while (scroll_delta <= -guac_mouse.scrollThreshold) { if (scroll_delta <= -guac_mouse.scrollThreshold) {
if (guac_mouse.onmousedown) { // Repeatedly click the up button until insufficient delta remains
guac_mouse.currentState.up = true; do {
guac_mouse.onmousedown(guac_mouse.currentState);
}
if (guac_mouse.onmouseup) { if (guac_mouse.onmousedown) {
guac_mouse.currentState.up = false; guac_mouse.currentState.up = true;
guac_mouse.onmouseup(guac_mouse.currentState); guac_mouse.onmousedown(guac_mouse.currentState);
} }
scroll_delta += guac_mouse.scrollThreshold; if (guac_mouse.onmouseup) {
guac_mouse.currentState.up = false;
guac_mouse.onmouseup(guac_mouse.currentState);
}
scroll_delta += guac_mouse.scrollThreshold;
} while (scroll_delta <= -guac_mouse.scrollThreshold);
// Reset delta
scroll_delta = 0;
} }
// Down // Down
while (scroll_delta >= guac_mouse.scrollThreshold) { if (scroll_delta >= guac_mouse.scrollThreshold) {
if (guac_mouse.onmousedown) { // Repeatedly click the down button until insufficient delta remains
guac_mouse.currentState.down = true; do {
guac_mouse.onmousedown(guac_mouse.currentState);
}
if (guac_mouse.onmouseup) { if (guac_mouse.onmousedown) {
guac_mouse.currentState.down = false; guac_mouse.currentState.down = true;
guac_mouse.onmouseup(guac_mouse.currentState); guac_mouse.onmousedown(guac_mouse.currentState);
} }
scroll_delta -= guac_mouse.scrollThreshold; if (guac_mouse.onmouseup) {
guac_mouse.currentState.down = false;
guac_mouse.onmouseup(guac_mouse.currentState);
}
scroll_delta -= guac_mouse.scrollThreshold;
} while (scroll_delta >= guac_mouse.scrollThreshold);
// Reset delta
scroll_delta = 0;
} }