Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserHandlerKeyboard.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserHandlerKeyboard.cpp	(revision 42831)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserHandlerKeyboard.cpp	(revision 42832)
@@ -316,6 +316,14 @@
         case Qt::Key_Space:
         {
+            /* If model is performing lookup: */
+            if (model()->isPerformingLookup())
+            {
+                /* Continue lookup: */
+                QString strText = pEvent->text();
+                if (!strText.isEmpty())
+                    model()->lookFor(strText);
+            }
             /* If there is a focus item: */
-            if (UIGChooserItem *pFocusItem = model()->focusItem())
+            else if (UIGChooserItem *pFocusItem = model()->focusItem())
             {
                 /* Of the group type: */
@@ -336,5 +344,11 @@
         }
         default:
+        {
+            /* Start lookup: */
+            QString strText = pEvent->text();
+            if (!strText.isEmpty())
+                model()->lookFor(strText);
             break;
+        }
     }
     /* Pass all other events: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItem.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItem.cpp	(revision 42831)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItem.cpp	(revision 42832)
@@ -165,5 +165,5 @@
             /* And make sure its opened: */
             if (pParentItem->closed())
-                pParentItem->open();
+                pParentItem->open(false);
         }
     }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp	(revision 42831)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp	(revision 42832)
@@ -62,4 +62,5 @@
     , m_pContextMenuGroup(0)
     , m_pContextMenuMachine(0)
+    , m_pLookupTimer(0)
 {
     /* Prepare scene: */
@@ -69,4 +70,7 @@
     prepareRoot();
 
+    /* Prepare lookup: */
+    prepareLookup();
+
     /* Prepare context-menu: */
     prepareContextMenu();
@@ -83,4 +87,7 @@
     /* Prepare context-menu: */
     cleanupContextMenu();
+
+    /* Cleanup lookup: */
+    cleanupLookup();
 
     /* Cleanup root: */
@@ -515,4 +522,26 @@
 {
     return UIGroupsSavingThread::instance();
+}
+
+void UIGChooserModel::lookFor(const QString &strLookupSymbol)
+{
+    /* Restart timer to reset lookup-string: */
+    m_pLookupTimer->start();
+    /* Look for item which is starting from the lookup-string: */
+    UIGChooserItem *pItem = lookForItem(mainRoot(), m_strLookupString + strLookupSymbol);
+    /* If item found: */
+    if (pItem)
+    {
+        /* Choose it: */
+        pItem->makeSureItsVisible();
+        setCurrentItem(pItem);
+        /* Append lookup symbol: */
+        m_strLookupString += strLookupSymbol;
+    }
+}
+
+bool UIGChooserModel::isPerformingLookup() const
+{
+    return m_pLookupTimer->isActive();
 }
 
@@ -890,4 +919,10 @@
 }
 
+void UIGChooserModel::sltEraseLookupTimer()
+{
+    m_pLookupTimer->stop();
+    m_strLookupString = QString();
+}
+
 QVariant UIGChooserModel::data(int iKey) const
 {
@@ -909,4 +944,12 @@
 {
     m_rootStack << new UIGChooserItemGroup(scene());
+}
+
+void UIGChooserModel::prepareLookup()
+{
+    m_pLookupTimer = new QTimer(this);
+    m_pLookupTimer->setInterval(1000);
+    m_pLookupTimer->setSingleShot(true);
+    connect(m_pLookupTimer, SIGNAL(timeout()), this, SLOT(sltEraseLookupTimer()));
 }
 
@@ -1018,4 +1061,10 @@
     delete m_pContextMenuMachine;
     m_pContextMenuMachine = 0;
+}
+
+void UIGChooserModel::cleanupLookup()
+{
+    delete m_pLookupTimer;
+    m_pLookupTimer = 0;
 }
 
@@ -1776,4 +1825,22 @@
 }
 
+UIGChooserItem* UIGChooserModel::lookForItem(UIGChooserItem *pParent, const QString &strStartingFrom)
+{
+    /* Search among the machines: */
+    foreach (UIGChooserItem *pItem, pParent->items(UIGChooserItemType_Machine))
+        if (pItem->name().startsWith(strStartingFrom, Qt::CaseInsensitive))
+            return pItem;
+    /* Search among the groups: */
+    foreach (UIGChooserItem *pItem, pParent->items(UIGChooserItemType_Group))
+    {
+        if (pItem->name().startsWith(strStartingFrom, Qt::CaseInsensitive))
+            return pItem;
+        if (UIGChooserItem *pResult = lookForItem(pItem, strStartingFrom))
+            return pResult;
+    }
+    /* Nothing found: */
+    return 0;
+}
+
 /* static */
 UIGroupsSavingThread* UIGroupsSavingThread::m_spInstance = 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 42831)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.h	(revision 42832)
@@ -44,4 +44,5 @@
 class UIGChooserHandlerMouse;
 class UIGChooserHandlerKeyboard;
+class QTimer;
 
 /* Context-menu type: */
@@ -156,4 +157,8 @@
     bool isGroupSavingInProgress() const;
 
+    /* API: Lookup stuff: */
+    void lookFor(const QString &strLookupSymbol);
+    bool isPerformingLookup() const;
+
 private slots:
 
@@ -204,4 +209,7 @@
     void sltGroupSavingComplete();
 
+    /* Handler: Lookup stuff: */
+    void sltEraseLookupTimer();
+
 private:
 
@@ -219,4 +227,5 @@
     void prepareScene();
     void prepareRoot();
+    void prepareLookup();
     void prepareContextMenu();
     void prepareHandlers();
@@ -227,4 +236,5 @@
     void cleanupHandlers();
     void cleanupContextMenu();
+    void cleanupLookup();
     void cleanupRoot();
     void cleanupScene();
@@ -293,4 +303,7 @@
     /* Helper: Group saving stuff: */
     void makeSureGroupSavingIsFinished();
+
+    /* Helper: Lookup stuff: */
+    UIGChooserItem* lookForItem(UIGChooserItem *pParent, const QString &strStartingFrom);
 
     /* Variables: */
@@ -314,4 +327,8 @@
     QMenu *m_pContextMenuGroup;
     QMenu *m_pContextMenuMachine;
+
+    /* Variables: Lookup stuff: */
+    QTimer *m_pLookupTimer;
+    QString m_strLookupString;
 };
 
