diff --git a/guacamole/src/main/webapp/app/index/controllers/indexController.js b/guacamole/src/main/webapp/app/index/controllers/indexController.js index 4d951fc46..25e6b6190 100644 --- a/guacamole/src/main/webapp/app/index/controllers/indexController.js +++ b/guacamole/src/main/webapp/app/index/controllers/indexController.js @@ -26,6 +26,7 @@ angular.module('index').controller('indexController', ['$scope', '$injector', // Required services var $document = $injector.get('$document'); var $window = $injector.get('$window'); + var clipboardService = $injector.get('clipboardService'); var guacNotification = $injector.get('guacNotification'); /** @@ -124,6 +125,28 @@ angular.module('index').controller('indexController', ['$scope', '$injector', keyboard.reset(); }; + /** + * Checks whether the clipboard data has changed, firing a new + * "guacClipboard" event if it has. + */ + var checkClipboard = function checkClipboard() { + clipboardService.getLocalClipboard().then(function clipboardRead(data) { + $scope.$broadcast('guacClipboard', data); + }); + }; + + // Attempt to read the clipboard if it may have changed + $window.addEventListener('load', checkClipboard, true); + $window.addEventListener('copy', checkClipboard, true); + $window.addEventListener('cut', checkClipboard, true); + $window.addEventListener('focus', function focusGained(e) { + + // Only recheck clipboard if it's the window itself that gained focus + if (e.target === $window) + checkClipboard(); + + }, true); + // Display login screen if a whole new set of credentials is needed $scope.$on('guacInvalidCredentials', function loginInvalid(event, parameters, error) { $scope.page.title = 'APP.NAME'; diff --git a/guacamole/src/main/webapp/app/index/indexModule.js b/guacamole/src/main/webapp/app/index/indexModule.js index e1bbd5173..22ab84f96 100644 --- a/guacamole/src/main/webapp/app/index/indexModule.js +++ b/guacamole/src/main/webapp/app/index/indexModule.js @@ -23,6 +23,7 @@ angular.module('index', [ 'auth', 'client', + 'clipboard', 'home', 'login', 'manage',