Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserAbstractModel.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserAbstractModel.cpp	(revision 86629)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserAbstractModel.cpp	(revision 86630)
@@ -601,4 +601,19 @@
 }
 
+void UIChooserAbstractModel::insertCloudAccountKey(const UICloudAccountKey &key)
+{
+    m_cloudAccountKeysBeingUpdated.insert(key);
+}
+
+void UIChooserAbstractModel::removeCloudAccountKey(const UICloudAccountKey &key)
+{
+    m_cloudAccountKeysBeingUpdated.remove(key);
+}
+
+bool UIChooserAbstractModel::containsCloudAccountKey(const UICloudAccountKey &key) const
+{
+    return m_cloudAccountKeysBeingUpdated.contains(key);
+}
+
 void UIChooserAbstractModel::sltLocalMachineStateChanged(const QUuid &uMachineId, const KMachineState)
 {
@@ -833,4 +848,8 @@
     if (!registeredMachines.isEmpty())
         sltCloudMachinesRegistered(pAcquiringTask->providerShortName(), pAcquiringTask->profileName(), registeredMachines);
+
+    /* Remove cloud account key from the list of keys currently being updated: */
+    const UICloudAccountKey accountKey = qMakePair(pAcquiringTask->providerShortName(), pAcquiringTask->profileName());
+    removeCloudAccountKey(accountKey);
 }
 
@@ -1031,4 +1050,8 @@
                                      0 /* position */,
                                      UIFakeCloudVirtualMachineItemState_Loading);
+
+            /* Insert cloud account key into a list of keys currently being updated: */
+            const UICloudAccountKey cloudAccountKey = qMakePair(strProviderShortName, strProfileName);
+            insertCloudAccountKey(cloudAccountKey);
 
             /* Create list cloud machines task: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserAbstractModel.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserAbstractModel.h	(revision 86629)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserAbstractModel.h	(revision 86630)
@@ -23,4 +23,5 @@
 
 /* Qt includes: */
+#include <QSet>
 #include <QUuid>
 
@@ -30,4 +31,7 @@
 /* COM includes: */
 #include "COMEnums.h"
+
+/* Typedefs: */
+typedef QPair<QString, QString> UICloudAccountKey;
 
 /* Forward declaration: */
@@ -135,4 +139,14 @@
         /** Handles group definitions saving complete. */
         void sltGroupDefinitionsSaveComplete();
+    /** @} */
+
+    /** @name Cloud update stuff.
+      * @{ */
+        /** Inserts cloud account @a key into a set of keys currently being updated. */
+        void insertCloudAccountKey(const UICloudAccountKey &key);
+        /** Removes cloud account @a key from a set of keys currently being updated. */
+        void removeCloudAccountKey(const UICloudAccountKey &key);
+        /** Returns whether cloud account @a key is a part of key set currently being updated. */
+        bool containsCloudAccountKey(const UICloudAccountKey &key) const;
     /** @} */
 
@@ -306,4 +320,10 @@
         QMap<QString, QStringList>  m_groups;
     /** @} */
+
+    /** @name Cloud update stuff.
+      * @{ */
+        /** Holds the set of cloud account keys currently being updated. */
+        QSet<UICloudAccountKey>  m_cloudAccountKeysBeingUpdated;
+    /** @} */
 };
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp	(revision 86629)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp	(revision 86630)
@@ -1776,6 +1776,5 @@
 
     /* For every selected machine-item: */
-    typedef QPair<QString, QString> UICloudAccount;
-    QSet<UICloudAccount> changedAccounts;
+    QSet<UICloudAccountKey> changedCloudAccountKeys;
     foreach (UIChooserItemMachine *pMachineItem, machineItems)
     {
@@ -1801,17 +1800,23 @@
             continue;
         }
-        /* Compose cloud account to update: */
+        /* Compose cloud account key to update: */
         const QString strProviderShortName = pMachineItem->parentItem()->parentItem()->name();
         const QString strProfileName = pMachineItem->parentItem()->name();
-        const UICloudAccount account = qMakePair(strProviderShortName, strProfileName);
-        if (!changedAccounts.contains(account))
-            changedAccounts.insert(account);
-    }
-
-    /* Restart list cloud machines task for required accounts: */
-    foreach (const UICloudAccount &account, changedAccounts)
-    {
-        UITaskCloudListMachines *pTask = new UITaskCloudListMachines(account.first /* short provider name */,
-                                                                     account.second /* profile name */,
+        const UICloudAccountKey accountKey = qMakePair(strProviderShortName, strProfileName);
+        if (!changedCloudAccountKeys.contains(accountKey))
+            changedCloudAccountKeys.insert(accountKey);
+    }
+
+    /* Restart List Cloud Machines task for required account keys: */
+    foreach (const UICloudAccountKey &accountKey, changedCloudAccountKeys)
+    {
+        /* Skip cloud account keys already being updated: */
+        if (containsCloudAccountKey(accountKey))
+            continue;
+        insertCloudAccountKey(accountKey);
+
+        /* Create a task for particular cloud account key: */
+        UITaskCloudListMachines *pTask = new UITaskCloudListMachines(accountKey.first /* short provider name */,
+                                                                     accountKey.second /* profile name */,
                                                                      false /* with refresh? */);
         AssertPtrReturnVoid(pTask);
