From f6909a06e76c4f12869d80768d0890dce365d3eb Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Sun, 4 Jul 2021 18:58:53 -0700 Subject: [PATCH] GUACAMOLE-724: Prefer to return an existing group rather than create a new one. This ensures that focus state is maintained when switching from one group to another. Focus state is otherwise reset when the group is recreated. --- .../src/app/client/services/guacClientManager.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/guacamole/src/main/frontend/src/app/client/services/guacClientManager.js b/guacamole/src/main/frontend/src/app/client/services/guacClientManager.js index e7821f220..2a0ea40b6 100644 --- a/guacamole/src/main/frontend/src/app/client/services/guacClientManager.js +++ b/guacamole/src/main/frontend/src/app/client/services/guacClientManager.js @@ -235,6 +235,15 @@ angular.module('client').factory('guacClientManager', ['$injector', */ service.getManagedClientGroup = function getManagedClientGroup(id) { + var managedClientGroups = storedManagedClientGroups(); + var existingGroup = _.find(managedClientGroups, (group) => { + return id === ManagedClientGroup.getIdentifier(group); + }); + + // Prefer to return the existing group if it exactly matches + if (existingGroup) + return existingGroup; + var clients = []; var clientIds = ManagedClientGroup.getClientIdentifiers(id); @@ -253,7 +262,6 @@ angular.module('client').factory('guacClientManager', ['$injector', clients : clients }); - var managedClientGroups = storedManagedClientGroups(); managedClientGroups.push(group); return group;