From 43022c14b383dc519d6ab2ea46f57de7b0f92b9b Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Thu, 4 Feb 2016 22:01:36 -0800 Subject: [PATCH] GUAC-1480: Only check clipboard when window regains focus. Do not attempt to read clipboard unless textarea actually has focus (paste may occur elsewhere otherwise). --- .../webapp/app/client/services/clipboardService.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/guacamole/src/main/webapp/app/client/services/clipboardService.js b/guacamole/src/main/webapp/app/client/services/clipboardService.js index b981b8bfb..0aa68ed2b 100644 --- a/guacamole/src/main/webapp/app/client/services/clipboardService.js +++ b/guacamole/src/main/webapp/app/client/services/clipboardService.js @@ -110,10 +110,11 @@ angular.module('client').factory('clipboardService', ['$injector', // Clear and select the clipboard DOM element clipboardContent.value = ''; + clipboardContent.focus(); clipboardContent.select(); // Attempt paste local clipboard into clipboard DOM element - if (document.execCommand('paste')) + if (document.activeElement === clipboardContent && document.execCommand('paste')) deferred.resolve(clipboardContent.value); else deferred.reject(); @@ -142,7 +143,13 @@ angular.module('client').factory('clipboardService', ['$injector', // Attempt to read the clipboard if it may have changed window.addEventListener('copy', checkClipboard, true); window.addEventListener('cut', checkClipboard, true); - window.addEventListener('focus', 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); return service;