From 452ec41fbd122a1679393ccdfbcd53b514ed7cac Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Sun, 16 Nov 2014 16:43:39 -0800 Subject: [PATCH] GUAC-605: Fix clipboard handling. --- .../webapp/app/client/controllers/clientController.js | 10 +++++----- .../main/webapp/app/client/directives/guacClient.js | 4 +--- .../webapp/app/client/services/guacClientFactory.js | 7 +------ 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/guacamole/src/main/webapp/app/client/controllers/clientController.js b/guacamole/src/main/webapp/app/client/controllers/clientController.js index 570da3957..db85dd52d 100644 --- a/guacamole/src/main/webapp/app/client/controllers/clientController.js +++ b/guacamole/src/main/webapp/app/client/controllers/clientController.js @@ -86,8 +86,8 @@ angular.module('home').controller('clientController', ['$scope', '$routeParams', }; // Update the model when clipboard data received from client - $scope.$on('guacClientClipboard', function clipboardDataReceived(clipboardData) { - $scope.guacClipboard = clipboardData; + $scope.$on('guacClientClipboard', function clientClipboardListener(event, client, mimetype, clipboardData) { + $scope.clipboardData = clipboardData; }); /* @@ -135,12 +135,12 @@ angular.module('home').controller('clientController', ['$scope', '$routeParams', $scope.$watch('menuShown', function setKeyboardEnabled(menuShown, menuShownPreviousState) { // Send clipboard data if menu is hidden - if (!menuShown && menuShownPreviousState) { - $scope.$broadcast('guacClipboard', $scope.clipboardData); - } + if (!menuShown && menuShownPreviousState) + $scope.$broadcast('guacClipboard', 'text/plain', $scope.clipboardData); // Disable client keyboard if the menu is shown $scope.clientProperties.keyboardEnabled = !menuShown; + }); $scope.$on('guacKeydown', function keydownListener(event, keysym, keyboard) { diff --git a/guacamole/src/main/webapp/app/client/directives/guacClient.js b/guacamole/src/main/webapp/app/client/directives/guacClient.js index 169001720..cebe3a942 100644 --- a/guacamole/src/main/webapp/app/client/directives/guacClient.js +++ b/guacamole/src/main/webapp/app/client/directives/guacClient.js @@ -55,8 +55,6 @@ angular.module('client').directive('guacClient', [function guacClient() { } }; - $scope.clipboard = ""; - /** * Whether the local, hardware mouse cursor is in use. * @@ -290,7 +288,7 @@ angular.module('client').directive('guacClient', [function guacClient() { */ // Update active client if clipboard changes - $scope.$watch('clipboard', function clipboardChange(data) { + $scope.$on('guacClipboard', function onClipboard(event, mimetype, data) { if (client) client.setClipboard(data); }); diff --git a/guacamole/src/main/webapp/app/client/services/guacClientFactory.js b/guacamole/src/main/webapp/app/client/services/guacClientFactory.js index 835eb43e2..e93e457a9 100644 --- a/guacamole/src/main/webapp/app/client/services/guacClientFactory.js +++ b/guacamole/src/main/webapp/app/client/services/guacClientFactory.js @@ -67,11 +67,6 @@ angular.module('client').factory('guacClientFactory', ['$rootScope', // Connected case 3: $scope.$emit('guacClientStateChange', guacClient, "connected"); - - // Update server clipboard with current data - if ($scope.clipboard) - guacClient.setClipboard($scope.clipboard); - break; // Disconnecting / disconnected are handled by tunnel instead @@ -131,7 +126,7 @@ angular.module('client').factory('guacClientFactory', ['$rootScope', // Emit event when done reader.onend = function clipboard_text_end() { - $scope.$emit('guacClientClipboard', guacClient, data); + $scope.$emit('guacClientClipboard', guacClient, mimetype, data); }; });