Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItem.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItem.h	(revision 43616)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItem.h	(revision 43617)
@@ -91,4 +91,5 @@
     virtual void hide();
     virtual void startEditing() = 0;
+    virtual void updateToolTip() = 0;
     virtual QString name() const = 0;
     virtual QString definition() const = 0;
@@ -105,4 +106,5 @@
     virtual bool hasItems(UIGChooserItemType type = UIGChooserItemType_Any) const = 0;
     virtual void clearItems(UIGChooserItemType type = UIGChooserItemType_Any) = 0;
+    virtual void updateAll(const QString &strId) = 0;
     virtual UIGChooserItem* searchForItem(const QString &strSearchTag, int iItemSearchFlags) = 0;
     virtual UIGChooserItemMachine* firstMachineItem() = 0;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.cpp	(revision 43616)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.cpp	(revision 43617)
@@ -244,53 +244,4 @@
             return true;
     return false;
-}
-
-void UIGChooserItemGroup::updateToolTip()
-{
-    /* Prepare variables: */
-    QStringList toolTipInfo;
-
-    /* Should we add name? */
-    if (!name().isEmpty())
-    {
-        /* Template: */
-        QString strTemplateForName = tr("<b>%1</b>", "Group item tool-tip / Group name");
-
-        /* Append value: */
-        toolTipInfo << strTemplateForName.arg(name());
-    }
-
-    /* Should we add group info? */
-    if (!items(UIGChooserItemType_Group).isEmpty())
-    {
-        /* Template: */
-        QString strGroupCount = tr("%n group(s)", "Group item tool-tip / Group info", items(UIGChooserItemType_Group).size());
-
-        /* Append value: */
-        QString strValue = tr("<nobr>%1</nobr>", "Group item tool-tip / Group info wrapper").arg(strGroupCount);
-        toolTipInfo << strValue;
-    }
-
-    /* Should we add machine info? */
-    if (!items(UIGChooserItemType_Machine).isEmpty())
-    {
-        /* Check if 'this' group contains started VMs: */
-        int iCountOfStartedMachineItems = 0;
-        foreach (UIGChooserItem *pItem, items(UIGChooserItemType_Machine))
-            if (UIVMItem::isItemStarted(pItem->toMachineItem()))
-                ++iCountOfStartedMachineItems;
-        /* Template: */
-        QString strMachineCount = tr("%n machine(s)", "Group item tool-tip / Machine info", items(UIGChooserItemType_Machine).size());
-        QString strStartedMachineCount = tr("(%n running)", "Group item tool-tip / Running machine info", iCountOfStartedMachineItems);
-
-        /* Append value: */
-        QString strValue = !iCountOfStartedMachineItems ?
-                           tr("<nobr>%1</nobr>", "Group item tool-tip / Machine info wrapper").arg(strMachineCount) :
-                           tr("<nobr>%1 %2</nobr>", "Group item tool-tip / Machine info wrapper, including running").arg(strMachineCount).arg(strStartedMachineCount);
-        toolTipInfo << strValue;
-    }
-
-    /* Set tool-tip: */
-    setToolTip(toolTipInfo.join("<br>"));
 }
 
@@ -602,4 +553,53 @@
 }
 
+void UIGChooserItemGroup::updateToolTip()
+{
+    /* Prepare variables: */
+    QStringList toolTipInfo;
+
+    /* Should we add name? */
+    if (!name().isEmpty())
+    {
+        /* Template: */
+        QString strTemplateForName = tr("<b>%1</b>", "Group item tool-tip / Group name");
+
+        /* Append value: */
+        toolTipInfo << strTemplateForName.arg(name());
+    }
+
+    /* Should we add group info? */
+    if (!items(UIGChooserItemType_Group).isEmpty())
+    {
+        /* Template: */
+        QString strGroupCount = tr("%n group(s)", "Group item tool-tip / Group info", items(UIGChooserItemType_Group).size());
+
+        /* Append value: */
+        QString strValue = tr("<nobr>%1</nobr>", "Group item tool-tip / Group info wrapper").arg(strGroupCount);
+        toolTipInfo << strValue;
+    }
+
+    /* Should we add machine info? */
+    if (!items(UIGChooserItemType_Machine).isEmpty())
+    {
+        /* Check if 'this' group contains started VMs: */
+        int iCountOfStartedMachineItems = 0;
+        foreach (UIGChooserItem *pItem, items(UIGChooserItemType_Machine))
+            if (UIVMItem::isItemStarted(pItem->toMachineItem()))
+                ++iCountOfStartedMachineItems;
+        /* Template: */
+        QString strMachineCount = tr("%n machine(s)", "Group item tool-tip / Machine info", items(UIGChooserItemType_Machine).size());
+        QString strStartedMachineCount = tr("(%n running)", "Group item tool-tip / Running machine info", iCountOfStartedMachineItems);
+
+        /* Append value: */
+        QString strValue = !iCountOfStartedMachineItems ?
+                           tr("<nobr>%1</nobr>", "Group item tool-tip / Machine info wrapper").arg(strMachineCount) :
+                           tr("<nobr>%1 %2</nobr>", "Group item tool-tip / Machine info wrapper, including running").arg(strMachineCount).arg(strStartedMachineCount);
+        toolTipInfo << strValue;
+    }
+
+    /* Set tool-tip: */
+    setToolTip(toolTipInfo.join("<br>"));
+}
+
 void UIGChooserItemGroup::addItem(UIGChooserItem *pItem, int iPosition)
 {
@@ -730,4 +730,11 @@
 
     updateToolTip();
+}
+
+void UIGChooserItemGroup::updateAll(const QString &strId)
+{
+    /* Update all the items: */
+    foreach (UIGChooserItem *pItem, items())
+        pItem->updateAll(strId);
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.h	(revision 43616)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.h	(revision 43617)
@@ -78,7 +78,4 @@
     bool contains(const QString &strId, bool fRecursively = false) const;
     bool isContainsLockedMachine();
-
-    /* API: Update stuff: */
-    void updateToolTip();
 
 private slots:
@@ -139,4 +136,5 @@
     void hide();
     void startEditing();
+    void updateToolTip();
     bool isMainRoot() const { return m_fMainRoot; }
 
@@ -148,4 +146,5 @@
     bool hasItems(UIGChooserItemType type = UIGChooserItemType_Any) const;
     void clearItems(UIGChooserItemType type = UIGChooserItemType_Any);
+    void updateAll(const QString &strId);
     UIGChooserItem* searchForItem(const QString &strSearchTag, int iItemSearchFlags);
     UIGChooserItemMachine* firstMachineItem();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.cpp	(revision 43616)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.cpp	(revision 43617)
@@ -148,9 +148,4 @@
 }
 
-void UIGChooserItemMachine::updateToolTip()
-{
-    setToolTip(toolTipText());
-}
-
 /* static */
 void UIGChooserItemMachine::enumerateMachineItems(const QList<UIGChooserItem*> &il,
@@ -328,4 +323,9 @@
 }
 
+void UIGChooserItemMachine::updateToolTip()
+{
+    setToolTip(toolTipText());
+}
+
 void UIGChooserItemMachine::addItem(UIGChooserItem*, int)
 {
@@ -358,4 +358,20 @@
 {
     AssertMsgFailed(("Machine graphics item do NOT support children!"));
+}
+
+void UIGChooserItemMachine::updateAll(const QString &strId)
+{
+    /* Skip wrong id: */
+    if (id() != strId)
+        return;
+
+    /* Update this machine-item: */
+    recache();
+    updateToolTip();
+    update();
+
+    /* Update parent group-item: */
+    parentItem()->updateToolTip();
+    parentItem()->update();
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.h	(revision 43616)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.h	(revision 43617)
@@ -61,7 +61,4 @@
     bool isLockedMachine() const;
 
-    /* API: Update stuff: */
-    void updateToolTip();
-
     /* API: Machine-item enumeration stuff: */
     static void enumerateMachineItems(const QList<UIGChooserItem*> &il,
@@ -116,4 +113,5 @@
     /* Helpers: Basic stuff: */
     void startEditing();
+    void updateToolTip();
 
     /* Helpers: Children stuff: */
@@ -124,4 +122,5 @@
     bool hasItems(UIGChooserItemType type) const;
     void clearItems(UIGChooserItemType type);
+    void updateAll(const QString &strId);
     UIGChooserItem* searchForItem(const QString &strSearchTag, int iItemSearchFlags);
     UIGChooserItemMachine* firstMachineItem();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp	(revision 43616)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp	(revision 43617)
@@ -588,5 +588,5 @@
 {
     /* Update machine-items with passed id: */
-    updateMachineItems(strId, mainRoot());
+    mainRoot()->updateAll(strId);
 }
 
@@ -594,5 +594,5 @@
 {
     /* Update machine-items with passed id: */
-    updateMachineItems(strId, mainRoot());
+    mainRoot()->updateAll(strId);
 }
 
@@ -640,5 +640,5 @@
 {
     /* Update machine-items with passed id: */
-    updateMachineItems(strId, mainRoot());
+    mainRoot()->updateAll(strId);
 }
 
@@ -646,5 +646,5 @@
 {
     /* Update machine-items with passed id: */
-    updateMachineItems(strId, mainRoot());
+    mainRoot()->updateAll(strId);
 }
 
@@ -1418,25 +1418,4 @@
             unindentRoot();
     }
-}
-
-void UIGChooserModel::updateMachineItems(const QString &strId, UIGChooserItem *pParent)
-{
-    /* For each group-item in passed parent: */
-    foreach (UIGChooserItem *pItem, pParent->items(UIGChooserItemType_Group))
-        updateMachineItems(strId, pItem->toGroupItem());
-    /* For each machine-item in passed parent: */
-    foreach (UIGChooserItem *pItem, pParent->items(UIGChooserItemType_Machine))
-        if (UIGChooserItemMachine *pMachineItem = pItem->toMachineItem())
-            if (pMachineItem->id() == strId)
-            {
-                /* Update machine-item: */
-                pMachineItem->recache();
-                pMachineItem->updateToolTip();
-                pMachineItem->update();
-                /* Update parent group-item: */
-                UIGChooserItemGroup *pParentGroupItem = pMachineItem->parentItem()->toGroupItem();
-                pParentGroupItem->updateToolTip();
-                pParentGroupItem->update();
-            }
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.h	(revision 43616)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.h	(revision 43617)
@@ -247,5 +247,4 @@
 
     /* Helpers: Machine-item stuff: */
-    void updateMachineItems(const QString &strId, UIGChooserItem *pParent);
     void removeMachineItems(const QString &strId, UIGChooserItem *pParent);
     void removeItems(const QList<UIGChooserItem*> &itemsToRemove);
