Index: trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp	(revision 43154)
+++ trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp	(revision 43155)
@@ -707,16 +707,4 @@
 }
 
-void UISelectorWindow::sltPerformRefreshAction()
-{
-    /* Get selected items: */
-    QList<UIVMItem*> items = currentItems();
-    AssertMsgReturnVoid(!items.isEmpty(), ("At least one item should be selected!\n"));
-
-    // TODO: Notify selector-model to refresh selected items!
-
-    /* Refresh details: */
-    sltCurrentVMItemChanged();
-}
-
 void UISelectorWindow::sltShowLogDialog()
 {
@@ -1405,5 +1393,4 @@
     connect(m_pAction_Common_Reset, SIGNAL(triggered()), this, SLOT(sltPerformResetAction()));
     connect(m_pAction_Common_Discard, SIGNAL(triggered()), this, SLOT(sltPerformDiscardAction()));
-    connect(m_pAction_Common_Refresh, SIGNAL(triggered()), this, SLOT(sltPerformRefreshAction()));
     connect(m_pAction_Common_ShowInFileManager, SIGNAL(triggered()), this, SLOT(sltShowMachineInFileManager()));
     connect(m_pAction_Common_CreateShortcut, SIGNAL(triggered()), this, SLOT(sltPerformCreateShortcutAction()));
Index: trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.h	(revision 43154)
+++ trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.h	(revision 43155)
@@ -96,5 +96,4 @@
     void sltPerformACPIShutdownAction();
     void sltPerformPowerOffAction();
-    void sltPerformRefreshAction();
     void sltShowLogDialog();
     void sltShowMachineInFileManager();
Index: trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp	(revision 43154)
+++ trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp	(revision 43155)
@@ -964,4 +964,37 @@
 }
 
+void UIGChooserModel::sltPerformRefreshAction()
+{
+    /* Gather list of chosen inaccessible VMs: */
+    QList<UIGChooserItem*> inaccessibleItems;
+    enumerateInaccessibleItems(selectionList(), inaccessibleItems);
+
+    /* For each inaccessible item: */
+    UIGChooserItem *pSelectedItem = 0;
+    foreach (UIGChooserItem *pItem, inaccessibleItems)
+        if (UIGChooserItemMachine *pMachineItem = pItem->toMachineItem())
+        {
+            /* Recache: */
+            pMachineItem->recache();
+            /* Become accessible? */
+            if (pMachineItem->accessible())
+            {
+                /* Machine name: */
+                QString strMachineName = pMachineItem->name();
+                /* We should reload this machine: */
+                sltReloadMachine(pMachineItem->id());
+                /* Select first of reloaded items: */
+                if (!pSelectedItem)
+                    pSelectedItem = findMachineItem(strMachineName, mainRoot());
+            }
+        }
+    /* Some item to be selected? */
+    if (pSelectedItem)
+    {
+        pSelectedItem->makeSureItsVisible();
+        setCurrentItem(pSelectedItem);
+    }
+}
+
 void UIGChooserModel::sltSortParentGroup()
 {
@@ -1110,4 +1143,6 @@
     connect(gActionPool->action(UIActionIndexSelector_Simple_Machine_AddGroup), SIGNAL(triggered()),
             this, SLOT(sltAddGroupBasedOnChosenItems()));
+    connect(gActionPool->action(UIActionIndexSelector_Simple_Common_Refresh), SIGNAL(triggered()),
+            this, SLOT(sltPerformRefreshAction()));
     connect(gActionPool->action(UIActionIndexSelector_Simple_Machine_SortParent), SIGNAL(triggered()),
             this, SLOT(sltSortParentGroup()));
@@ -1923,4 +1958,37 @@
 }
 
+void UIGChooserModel::enumerateInaccessibleItems(const QList<UIGChooserItem*> &il, QList<UIGChooserItem*> &ol) const
+{
+    /* Enumerate all the passed items: */
+    foreach (UIGChooserItem *pItem, il)
+    {
+        /* If item is inaccessible machine: */
+        if (pItem->type() == UIGChooserItemType_Machine)
+        {
+            if (UIGChooserItemMachine *pMachineItem = pItem->toMachineItem())
+                if (!pMachineItem->accessible() && !contains(ol, pItem))
+                    ol << pMachineItem;
+        }
+        /* If item is group: */
+        else if (pItem->type() == UIGChooserItemType_Group)
+        {
+            /* Enumerate all the machine items recursively: */
+            enumerateInaccessibleItems(pItem->items(UIGChooserItemType_Machine), ol);
+            /* Enumerate all the group items recursively: */
+            enumerateInaccessibleItems(pItem->items(UIGChooserItemType_Group), ol);
+        }
+    }
+}
+
+bool UIGChooserModel::contains(const QList<UIGChooserItem*> &il, UIGChooserItem *pLookupItem) const
+{
+    /* We assume passed list contains only machine items: */
+    foreach (UIGChooserItem *pItem, il)
+        if (UIGChooserItemMachine *pMachineItem = pItem->toMachineItem())
+            if (pMachineItem->id() == pLookupItem->toMachineItem()->id())
+                return true;
+    return false;
+}
+
 void UIGChooserModel::sortItems(UIGChooserItem *pParent, bool fRecursively /* = false */)
 {
Index: trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.h	(revision 43154)
+++ trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.h	(revision 43155)
@@ -206,4 +206,7 @@
     void sltSlidingComplete();
 
+    /* Handler: Refresh stuff: */
+    void sltPerformRefreshAction();
+
     /* Handlers: Sorting stuff: */
     void sltSortParentGroup();
@@ -304,4 +307,8 @@
     void removeMachineItems(const QStringList &names, QList<UIGChooserItem*> &selectedItems);
     void unregisterMachines(const QStringList &ids);
+
+    /* Helper: Refresh stuff: */
+    void enumerateInaccessibleItems(const QList<UIGChooserItem*> &il, QList<UIGChooserItem*> &ol) const;
+    bool contains(const QList<UIGChooserItem*> &il, UIGChooserItem *pLookupItem) const;
 
     /* Helper: Sorting stuff: */
