mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 05:07:41 +00:00
GUACAMOLE-1204: Add convenient mechanism for automatically scaling mouse events.
This commit is contained in:
@@ -323,19 +323,33 @@ Guacamole.Client = function(tunnel) {
|
|||||||
* Sends a mouse event having the properties provided by the given mouse
|
* Sends a mouse event having the properties provided by the given mouse
|
||||||
* state.
|
* state.
|
||||||
*
|
*
|
||||||
* @param {Guacamole.Mouse.State} mouseState The state of the mouse to send
|
* @param {Guacamole.Mouse.State} mouseState
|
||||||
* in the mouse event.
|
* The state of the mouse to send in the mouse event.
|
||||||
|
*
|
||||||
|
* @param {Boolean} [applyDisplayScale=false]
|
||||||
|
* Whether the provided mouse state uses local display units, rather
|
||||||
|
* than remote display units, and should be scaled to match the
|
||||||
|
* {@link Guacamole.Display}.
|
||||||
*/
|
*/
|
||||||
this.sendMouseState = function(mouseState) {
|
this.sendMouseState = function sendMouseState(mouseState, applyDisplayScale) {
|
||||||
|
|
||||||
// Do not send requests if not connected
|
// Do not send requests if not connected
|
||||||
if (!isConnected())
|
if (!isConnected())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
var x = mouseState.x;
|
||||||
|
var y = mouseState.y;
|
||||||
|
|
||||||
|
// Translate for display units if requested
|
||||||
|
if (applyDisplayScale) {
|
||||||
|
x /= display.getScale();
|
||||||
|
y /= display.getScale();
|
||||||
|
}
|
||||||
|
|
||||||
// Update client-side cursor
|
// Update client-side cursor
|
||||||
display.moveCursor(
|
display.moveCursor(
|
||||||
Math.floor(mouseState.x),
|
Math.floor(x),
|
||||||
Math.floor(mouseState.y)
|
Math.floor(y)
|
||||||
);
|
);
|
||||||
|
|
||||||
// Build mask
|
// Build mask
|
||||||
@@ -347,7 +361,7 @@ Guacamole.Client = function(tunnel) {
|
|||||||
if (mouseState.down) buttonMask |= 16;
|
if (mouseState.down) buttonMask |= 16;
|
||||||
|
|
||||||
// Send message
|
// Send message
|
||||||
tunnel.sendMessage("mouse", Math.floor(mouseState.x), Math.floor(mouseState.y), buttonMask);
|
tunnel.sendMessage("mouse", Math.floor(x), Math.floor(y), buttonMask);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -185,29 +185,6 @@ angular.module('client').directive('guacClient', [function guacClient() {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Sends the given mouse state to the current client.
|
|
||||||
*
|
|
||||||
* @param {Guacamole.Mouse.State} mouseState The mouse state to
|
|
||||||
* send.
|
|
||||||
*/
|
|
||||||
var sendScaledMouseState = function sendScaledMouseState(mouseState) {
|
|
||||||
|
|
||||||
// Scale event by current scale
|
|
||||||
var scaledState = new Guacamole.Mouse.State(
|
|
||||||
mouseState.x / display.getScale(),
|
|
||||||
mouseState.y / display.getScale(),
|
|
||||||
mouseState.left,
|
|
||||||
mouseState.middle,
|
|
||||||
mouseState.right,
|
|
||||||
mouseState.up,
|
|
||||||
mouseState.down);
|
|
||||||
|
|
||||||
// Send mouse event
|
|
||||||
client.sendMouseState(scaledState);
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles a mouse event originating from the user's actual mouse.
|
* Handles a mouse event originating from the user's actual mouse.
|
||||||
* This differs from handleEmulatedMouseState() in that the
|
* This differs from handleEmulatedMouseState() in that the
|
||||||
@@ -226,7 +203,7 @@ angular.module('client').directive('guacClient', [function guacClient() {
|
|||||||
|
|
||||||
// Send mouse state, show cursor if necessary
|
// Send mouse state, show cursor if necessary
|
||||||
display.showCursor(!localCursor);
|
display.showCursor(!localCursor);
|
||||||
sendScaledMouseState(mouseState);
|
client.sendMouseState(mouseState, true);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -251,7 +228,7 @@ angular.module('client').directive('guacClient', [function guacClient() {
|
|||||||
|
|
||||||
// Send mouse state, ensure cursor is visible
|
// Send mouse state, ensure cursor is visible
|
||||||
scrollToMouse(mouseState);
|
scrollToMouse(mouseState);
|
||||||
sendScaledMouseState(mouseState);
|
client.sendMouseState(mouseState, true);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user