Skip to content

Commit

Permalink
GUACAMOLE-1904: Merge additional AngularJS events reporting client-sp…
Browse files Browse the repository at this point in the history
…ecific mouse/touch interaction.
  • Loading branch information
mike-jumper authored Jan 31, 2024
2 parents 0c9e124 + 56ca4e9 commit 22fe53f
Showing 1 changed file with 54 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ angular.module('client').directive('guacClient', [function guacClient() {
const ManagedClient = $injector.get('ManagedClient');

// Required services
const $rootScope = $injector.get('$rootScope');
const $window = $injector.get('$window');

/**
Expand Down Expand Up @@ -197,6 +198,28 @@ angular.module('client').directive('guacClient', [function guacClient() {

};

/**
* Return the name of the angular event associated with the provided
* mouse event.
*
* @param {Guacamole.Mouse.MouseEvent} event
* The mouse event to determine an angular event name for.
*
* @returns
* The name of the angular event associated with the provided
* mouse event.
*/
const getMouseEventName = event => {
switch (event.type) {
case 'mousedown':
return 'guacClientMouseDown';
case 'mouseup':
return 'guacClientMouseUp';
default:
return 'guacClientMouseMove';
}
};

/**
* Handles a mouse event originating from the user's actual mouse.
* This differs from handleEmulatedMouseEvent() in that the
Expand All @@ -220,6 +243,9 @@ angular.module('client').directive('guacClient', [function guacClient() {
display.showCursor(!localCursor);
client.sendMouseState(event.state, true);

// Broadcast the mouse event
$rootScope.$broadcast(getMouseEventName(event), event, client);

};

/**
Expand Down Expand Up @@ -248,6 +274,31 @@ angular.module('client').directive('guacClient', [function guacClient() {
scrollToMouse(event.state);
client.sendMouseState(event.state, true);

// Broadcast the mouse event
$rootScope.$broadcast(getMouseEventName(event), event, client);

};

/**
* Return the name of the angular event associated with the provided
* touch event.
*
* @param {Guacamole.Touch.TouchEvent} event
* The touch event to determine an angular event name for.
*
* @returns
* The name of the angular event associated with the provided
* touch event.
*/
const getTouchEventName = event => {
switch (event.type) {
case 'touchstart':
return 'guacClientTouchStart';
case 'touchend':
return 'guacClientTouchEnd';
default:
return 'guacClientTouchMove';
}
};

/**
Expand All @@ -269,6 +320,9 @@ angular.module('client').directive('guacClient', [function guacClient() {
display.showCursor(false);
client.sendTouchState(event.state, true);

// Broadcast the touch event
$rootScope.$broadcast(getTouchEventName(event), event, client);

};

// Attach any given managed client
Expand Down

0 comments on commit 22fe53f

Please sign in to comment.