Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp	(revision 86655)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp	(revision 86656)
@@ -67,4 +67,6 @@
     , m_iScrollingTokenSize(30)
     , m_fIsScrollingInProgress(false)
+    , m_fPreventCloudProfileUpdate(false)
+    , m_pTimerCloudProfileUpdate(0)
 {
     prepare();
@@ -1238,5 +1240,10 @@
 
     /* Rebuild tree for main root: */
+    m_fPreventCloudProfileUpdate = true;
     buildTreeForMainRoot(true /* preserve selection */);
+    m_fPreventCloudProfileUpdate = false;
+
+    /* Restart cloud profile update timer: */
+    m_pTimerCloudProfileUpdate->start(10000);
 }
 
@@ -1305,4 +1312,84 @@
 }
 
+void UIChooserModel::sltUpdateSelectedCloudProfiles()
+{
+    /* Ignore if cloud profile update is restricted: */
+    if (m_fPreventCloudProfileUpdate)
+        return;
+
+    /* For every selected item: */
+    QSet<UICloudAccountKey> selectedCloudAccountKeys;
+    foreach (UIChooserItem *pSelectedItem, selectedItems())
+    {
+        /* Enumerate cloud account keys to update: */
+        switch (pSelectedItem->type())
+        {
+            case UIChooserNodeType_Group:
+            {
+                UIChooserItemGroup *pGroupItem = pSelectedItem->toGroupItem();
+                AssertPtrReturnVoid(pGroupItem);
+                switch (pGroupItem->groupType())
+                {
+                    case UIChooserNodeGroupType_Provider:
+                    {
+                        const QString strProviderShortName = pSelectedItem->name();
+                        foreach (UIChooserItem *pChildItem, pSelectedItem->items(UIChooserNodeType_Group))
+                        {
+                            const QString strProfileName = pChildItem->name();
+                            const UICloudAccountKey cloudAccountKey = qMakePair(strProviderShortName, strProfileName);
+                            if (!selectedCloudAccountKeys.contains(cloudAccountKey))
+                                selectedCloudAccountKeys.insert(cloudAccountKey);
+                        }
+                        break;
+                    }
+                    case UIChooserNodeGroupType_Profile:
+                    {
+                        const QString strProviderShortName = pSelectedItem->parentItem()->name();
+                        const QString strProfileName = pSelectedItem->name();
+                        const UICloudAccountKey cloudAccountKey = qMakePair(strProviderShortName, strProfileName);
+                        if (!selectedCloudAccountKeys.contains(cloudAccountKey))
+                            selectedCloudAccountKeys.insert(cloudAccountKey);
+                        break;
+                    }
+                    default:
+                        break;
+                }
+                break;
+            }
+            case UIChooserNodeType_Machine:
+            {
+                UIChooserItemMachine *pMachineItem = pSelectedItem->toMachineItem();
+                AssertPtrReturnVoid(pMachineItem);
+                if (   pMachineItem->cacheType() == UIVirtualMachineItemType_CloudFake
+                    || pMachineItem->cacheType() == UIVirtualMachineItemType_CloudReal)
+                {
+                    const QString strProviderShortName = pMachineItem->parentItem()->parentItem()->name();
+                    const QString strProfileName = pMachineItem->parentItem()->name();
+                    const UICloudAccountKey cloudAccountKey = qMakePair(strProviderShortName, strProfileName);
+                    if (!selectedCloudAccountKeys.contains(cloudAccountKey))
+                        selectedCloudAccountKeys.insert(cloudAccountKey);
+                }
+                break;
+            }
+        }
+    }
+
+    /* Restart List Cloud Machines task for selected account keys: */
+    foreach (const UICloudAccountKey &cloudAccountKey, selectedCloudAccountKeys)
+    {
+        /* Skip cloud account keys already being updated: */
+        if (containsCloudAccountKey(cloudAccountKey))
+            continue;
+        insertCloudAccountKey(cloudAccountKey);
+
+        /* Create a task for particular cloud account key: */
+        UITaskCloudListMachines *pTask = new UITaskCloudListMachines(cloudAccountKey.first /* short provider name */,
+                                                                     cloudAccountKey.second /* profile name */,
+                                                                     false /* with refresh? */);
+        AssertPtrReturnVoid(pTask);
+        uiCommon().threadPoolCloud()->enqueueTask(pTask);
+    }
+}
+
 void UIChooserModel::prepare()
 {
@@ -1310,4 +1397,6 @@
     prepareContextMenu();
     prepareHandlers();
+    prepareCloudUpdateTimer();
+    prepareConnections();
 }
 
@@ -1463,4 +1552,19 @@
 }
 
+void UIChooserModel::prepareCloudUpdateTimer()
+{
+    m_pTimerCloudProfileUpdate = new QTimer;
+    if (m_pTimerCloudProfileUpdate)
+        m_pTimerCloudProfileUpdate->setSingleShot(true);
+}
+
+void UIChooserModel::prepareConnections()
+{
+    connect(this, &UIChooserModel::sigSelectionChanged,
+            this, &UIChooserModel::sltUpdateSelectedCloudProfiles);
+    connect(m_pTimerCloudProfileUpdate, &QTimer::timeout,
+            this, &UIChooserModel::sltUpdateSelectedCloudProfiles);
+}
+
 void UIChooserModel::loadLastSelectedItem()
 {
@@ -1493,4 +1597,18 @@
 }
 
+void UIChooserModel::cleanupConnections()
+{
+    disconnect(this, &UIChooserModel::sigSelectionChanged,
+               this, &UIChooserModel::sltUpdateSelectedCloudProfiles);
+    disconnect(m_pTimerCloudProfileUpdate, &QTimer::timeout,
+               this, &UIChooserModel::sltUpdateSelectedCloudProfiles);
+}
+
+void UIChooserModel::cleanupCloudUpdateTimer()
+{
+    delete m_pTimerCloudProfileUpdate;
+    m_pTimerCloudProfileUpdate = 0;
+}
+
 void UIChooserModel::cleanupHandlers()
 {
@@ -1517,4 +1635,6 @@
 void UIChooserModel::cleanup()
 {
+    cleanupConnections();
+    cleanupCloudUpdateTimer();
     cleanupHandlers();
     cleanupContextMenu();
@@ -1800,8 +1920,15 @@
         machines << pMachineItem->cache()->toCloud()->machine();
 
+    /* Stop cloud update prematurely: */
+    m_pTimerCloudProfileUpdate->stop();
+
     /* Confirm machine removal: */
     const int iResultCode = msgCenter().confirmCloudMachineRemoval(machines);
     if (iResultCode == AlertButton_Cancel)
+    {
+        /* Resume cloud update if cancelled: */
+        m_pTimerCloudProfileUpdate->start(10000);
         return;
+    }
 
     /* For every selected machine-item: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.h	(revision 86655)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.h	(revision 86656)
@@ -330,4 +330,10 @@
     /** @} */
 
+    /** @name Cloud stuff.
+      * @{ */
+        /** Updates selected cloud profiles. */
+        void sltUpdateSelectedCloudProfiles();
+    /** @} */
+
 private:
 
@@ -342,4 +348,8 @@
         /** Prepares handlers. */
         void prepareHandlers();
+        /** Prepares cloud update timer. */
+        void prepareCloudUpdateTimer();
+        /** Prepares connections. */
+        void prepareConnections();
         /** Loads last selected-items. */
         void loadLastSelectedItem();
@@ -347,4 +357,8 @@
         /** Saves last selected-items. */
         void saveLastSelectedItem();
+        /** Cleanups connections. */
+        void cleanupConnections();
+        /** Cleanups cloud update timer.*/
+        void cleanupCloudUpdateTimer();
         /** Cleanups handlers. */
         void cleanupHandlers();
@@ -443,4 +457,12 @@
         bool             m_fIsScrollingInProgress;
     /** @} */
+
+    /** @name Cloud stuff.
+      * @{ */
+        /** Holds whether cloud profile update is restricted. */
+        bool    m_fPreventCloudProfileUpdate;
+        /** Holds cloud profile update timer instance. */
+        QTimer *m_pTimerCloudProfileUpdate;
+    /** @} */
 };
 
