Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItem.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItem.h	(revision 43618)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItem.h	(revision 43619)
@@ -107,4 +107,5 @@
     virtual void clearItems(UIGChooserItemType type = UIGChooserItemType_Any) = 0;
     virtual void updateAll(const QString &strId) = 0;
+    virtual void removeAll(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 43618)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.cpp	(revision 43619)
@@ -734,7 +734,14 @@
 void UIGChooserItemGroup::updateAll(const QString &strId)
 {
-    /* Update all the items: */
+    /* Update all the required items recursively: */
     foreach (UIGChooserItem *pItem, items())
         pItem->updateAll(strId);
+}
+
+void UIGChooserItemGroup::removeAll(const QString &strId)
+{
+    /* Remove all the required items recursively: */
+    foreach (UIGChooserItem *pItem, items())
+        pItem->removeAll(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 43618)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.h	(revision 43619)
@@ -147,4 +147,5 @@
     void clearItems(UIGChooserItemType type = UIGChooserItemType_Any);
     void updateAll(const QString &strId);
+    void removeAll(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 43618)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.cpp	(revision 43619)
@@ -376,4 +376,14 @@
 }
 
+void UIGChooserItemMachine::removeAll(const QString &strId)
+{
+    /* Skip wrong id: */
+    if (id() != strId)
+        return;
+
+    /* Remove item: */
+    delete this;
+}
+
 UIGChooserItem* UIGChooserItemMachine::searchForItem(const QString &strSearchTag, int iItemSearchFlags)
 {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.h	(revision 43618)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.h	(revision 43619)
@@ -123,4 +123,5 @@
     void clearItems(UIGChooserItemType type);
     void updateAll(const QString &strId);
+    void removeAll(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 43618)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp	(revision 43619)
@@ -621,5 +621,5 @@
     {
         /* Remove machine-items with passed id: */
-        removeMachineItems(strId, mainRoot());
+        mainRoot()->removeAll(strId);
         /* Update model: */
         cleanupGroupTree();
@@ -885,5 +885,5 @@
 {
     /* Remove all the items first: */
-    removeMachineItems(strId, mainRoot());
+    mainRoot()->removeAll(strId);
 
     /* Check if such machine still present: */
@@ -1418,15 +1418,4 @@
             unindentRoot();
     }
-}
-
-void UIGChooserModel::removeMachineItems(const QString &strId, UIGChooserItem *pParent)
-{
-    /* For each group-item in passed parent: */
-    foreach (UIGChooserItem *pItem, pParent->items(UIGChooserItemType_Group))
-        removeMachineItems(strId, pItem->toGroupItem());
-    /* For each machine-item in passed parent: */
-    foreach (UIGChooserItem *pItem, pParent->items(UIGChooserItemType_Machine))
-        if (pItem->toMachineItem()->id() == strId)
-            delete pItem;
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.h	(revision 43618)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.h	(revision 43619)
@@ -247,5 +247,4 @@
 
     /* Helpers: Machine-item stuff: */
-    void removeMachineItems(const QString &strId, UIGChooserItem *pParent);
     void removeItems(const QList<UIGChooserItem*> &itemsToRemove);
     void unregisterMachines(const QStringList &ids);
