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
|
||||
* state.
|
||||
*
|
||||
* @param {Guacamole.Mouse.State} mouseState The state of the mouse to send
|
||||
* in the mouse event.
|
||||
* @param {Guacamole.Mouse.State} mouseState
|
||||
* 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
|
||||
if (!isConnected())
|
||||
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
|
||||
display.moveCursor(
|
||||
Math.floor(mouseState.x),
|
||||
Math.floor(mouseState.y)
|
||||
Math.floor(x),
|
||||
Math.floor(y)
|
||||
);
|
||||
|
||||
// Build mask
|
||||
@@ -347,7 +361,7 @@ Guacamole.Client = function(tunnel) {
|
||||
if (mouseState.down) buttonMask |= 16;
|
||||
|
||||
// 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.
|
||||
* 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
|
||||
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
|
||||
scrollToMouse(mouseState);
|
||||
sendScaledMouseState(mouseState);
|
||||
client.sendMouseState(mouseState, true);
|
||||
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user