Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItem.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItem.h	(revision 43596)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItem.h	(revision 43597)
@@ -94,4 +94,5 @@
     virtual bool hasItems(UIGChooserItemType type = UIGChooserItemType_Any) const = 0;
     virtual void clearItems(UIGChooserItemType type = UIGChooserItemType_Any) = 0;
+    virtual UIGChooserItemMachine* firstMachineItem() = 0;
 
     /* API: Layout stuff: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.cpp	(revision 43596)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.cpp	(revision 43597)
@@ -732,4 +732,18 @@
 }
 
+UIGChooserItemMachine* UIGChooserItemGroup::firstMachineItem()
+{
+    /* If this group-item have at least one machine-item: */
+    if (hasItems(UIGChooserItemType_Machine))
+        /* Return the first machine-item: */
+        return items(UIGChooserItemType_Machine).first()->firstMachineItem();
+    /* If this group-item have at least one group-item: */
+    else if (hasItems(UIGChooserItemType_Group))
+        /* Return the first machine-item of the first group-item: */
+        return items(UIGChooserItemType_Group).first()->firstMachineItem();
+    /* Found nothing? */
+    return 0;
+}
+
 void UIGChooserItemGroup::updateLayout()
 {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.h	(revision 43596)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.h	(revision 43597)
@@ -148,4 +148,5 @@
     bool hasItems(UIGChooserItemType type = UIGChooserItemType_Any) const;
     void clearItems(UIGChooserItemType type = UIGChooserItemType_Any);
+    UIGChooserItemMachine* firstMachineItem();
 
     /* Helpers: Layout stuff: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.cpp	(revision 43596)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.cpp	(revision 43597)
@@ -360,4 +360,9 @@
 }
 
+UIGChooserItemMachine* UIGChooserItemMachine::firstMachineItem()
+{
+    return this;
+}
+
 void UIGChooserItemMachine::updateLayout()
 {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.h	(revision 43596)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.h	(revision 43597)
@@ -127,4 +127,5 @@
     bool hasItems(UIGChooserItemType type) const;
     void clearItems(UIGChooserItemType type);
+    UIGChooserItemMachine* firstMachineItem();
 
     /* Helpers: Layout stuff: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp	(revision 43596)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp	(revision 43597)
@@ -204,6 +204,6 @@
 UIVMItem* UIGChooserModel::currentMachineItem() const
 {
-    /* Return first machine-item: */
-    return firstMachineItem(currentItems());
+    /* Return first machine-item of the current-item: */
+    return currentItem() ? currentItem()->firstMachineItem() : 0;
 }
 
@@ -1357,31 +1357,4 @@
     /* Return navigation list: */
     return navigationItems;
-}
-
-UIGChooserItemMachine* UIGChooserModel::firstMachineItem(const QList<UIGChooserItem*> &list) const
-{
-    /* Iterate over all the passed items: */
-    foreach (UIGChooserItem *pItem, list)
-    {
-        /* If that is machine-item: */
-        if (pItem->type() == UIGChooserItemType_Machine)
-        {
-            /* Just return it: */
-            return pItem->toMachineItem();
-        }
-        /* If that is group-item: */
-        else if (pItem->type() == UIGChooserItemType_Group)
-        {
-            /* If that group-item have at least one machine-item: */
-            if (pItem->hasItems(UIGChooserItemType_Machine))
-                /* Iterate over all the machine-items recursively: */
-                return firstMachineItem(pItem->items(UIGChooserItemType_Machine));
-            /* If that group-item have at least one group-item: */
-            else if (pItem->hasItems(UIGChooserItemType_Group))
-                /* Iterate over all the group-items recursively: */
-                return firstMachineItem(pItem->items(UIGChooserItemType_Group));
-        }
-    }
-    return 0;
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.h	(revision 43596)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.h	(revision 43597)
@@ -238,7 +238,4 @@
     QList<UIGChooserItem*> createNavigationList(UIGChooserItem *pItem);
 
-    /* Helpers: Current-item stuff: */
-    UIGChooserItemMachine* firstMachineItem(const QList<UIGChooserItem*> &list) const;
-
     /* Helper: Focus-item stuff: */
     void clearRealFocus();
