Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumSelector.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumSelector.cpp	(revision 76906)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumSelector.cpp	(revision 76907)
@@ -75,4 +75,6 @@
 
     void sigPerformSearch();
+    void sigShowNextMatchingItem();
+    void sigShowPreviousMatchingItem();
 
 public:
@@ -88,8 +90,9 @@
 private:
 
-    void prepareWidgets();
+    void              prepareWidgets();
     QIComboBox       *m_pSearchComboxBox;
     QLineEdit        *m_pSearchTermLineEdit;
-    QIToolButton     *m_pSearchButton;
+    QIToolButton     *m_pShowNextMatchButton;
+    QIToolButton     *m_pShowPreviousMatchButton;
 };
 
@@ -103,5 +106,6 @@
     , m_pSearchComboxBox(0)
     , m_pSearchTermLineEdit(0)
-    , m_pSearchButton(0)
+    , m_pShowNextMatchButton(0)
+    , m_pShowPreviousMatchButton(0)
 {
     prepareWidgets();
@@ -133,15 +137,23 @@
         m_pSearchTermLineEdit->setClearButtonEnabled(true);
         pLayout->addWidget(m_pSearchTermLineEdit);
-        connect(m_pSearchTermLineEdit, &QILineEdit::editingFinished,
+        connect(m_pSearchTermLineEdit, &QILineEdit::textChanged,
                 this, &UIMediumSearchWidget::sigPerformSearch);
     }
 
-    m_pSearchButton = new QIToolButton;
-    if (m_pSearchButton)
-    {
-        m_pSearchButton->setIcon(UIIconPool::iconSet(":/log_viewer_find_16px.png", ":/log_viewer_find_disabled_16px.png"));
-        connect(m_pSearchButton, &QIToolButton::clicked, this, &UIMediumSearchWidget::sigPerformSearch);
-        pLayout->addWidget(m_pSearchButton);
-    }
+    m_pShowPreviousMatchButton = new QIToolButton;
+    if (m_pShowPreviousMatchButton)
+    {
+        m_pShowPreviousMatchButton->setIcon(UIIconPool::iconSet(":/log_viewer_search_backward_16px.png", ":/log_viewer_search_backward_disabled_16px.png"));
+        connect(m_pShowPreviousMatchButton, &QIToolButton::clicked, this, &UIMediumSearchWidget::sigShowPreviousMatchingItem);
+        pLayout->addWidget(m_pShowPreviousMatchButton);
+    }
+    m_pShowNextMatchButton = new QIToolButton;
+    if (m_pShowNextMatchButton)
+    {
+        m_pShowNextMatchButton->setIcon(UIIconPool::iconSet(":/log_viewer_search_forward_16px.png", ":/log_viewer_search_forward_disabled_16px.png"));
+        connect(m_pShowNextMatchButton, &QIToolButton::clicked, this, &UIMediumSearchWidget:: sigShowNextMatchingItem);
+        pLayout->addWidget(m_pShowNextMatchButton);
+    }
+
     retranslateUi();
 }
@@ -171,8 +183,9 @@
     if (m_pSearchTermLineEdit)
         m_pSearchTermLineEdit->setToolTip("Enter the search term and press Return");
-    if (m_pSearchButton)
-        m_pSearchButton->setToolTip("Search medium with the given name or UUID");
-}
-
+    if (m_pShowPreviousMatchButton)
+        m_pShowPreviousMatchButton->setToolTip("Show the previous item matching the search term");
+    if (m_pShowNextMatchButton)
+        m_pShowNextMatchButton->setToolTip("Show the next item matching the search term");
+}
 
 /*********************************************************************************************************************************
@@ -197,4 +210,5 @@
     , m_pParent(pParent)
     , m_pSearchWidget(0)
+    , m_iCurrentShownIndex(0)
     , m_strMachineSettingsFilePath(machineSettigFilePath)
     , m_strMachineName(machineName)
@@ -367,4 +381,8 @@
         connect(m_pSearchWidget, &UIMediumSearchWidget::sigPerformSearch,
                 this, &UIMediumSelector::sltHandlePerformSearch);
+        connect(m_pSearchWidget, &UIMediumSearchWidget::sigShowNextMatchingItem,
+                this, &UIMediumSelector::sltHandleShowNextMatchingItem);
+        connect(m_pSearchWidget, &UIMediumSearchWidget::sigShowPreviousMatchingItem,
+                this, &UIMediumSelector::sltHandlehowPreviousMatchingItem);
     }
 }
@@ -583,4 +601,23 @@
 }
 
+void UIMediumSelector::sltHandleShowNextMatchingItem()
+{
+    if (m_mathingItemList.isEmpty())
+        return;
+
+    if (++m_iCurrentShownIndex >= m_mathingItemList.size())
+        m_iCurrentShownIndex = 0;
+    scrollToItem(m_mathingItemList[m_iCurrentShownIndex]);
+}
+
+void UIMediumSelector::sltHandlehowPreviousMatchingItem()
+{
+    if (m_mathingItemList.isEmpty())
+        return;
+    if (--m_iCurrentShownIndex < 0)
+        m_iCurrentShownIndex = m_mathingItemList.size() -1;
+    scrollToItem(m_mathingItemList[m_iCurrentShownIndex]);
+}
+
 void UIMediumSelector::selectMedium(const QUuid &uMediumID)
 {
@@ -780,4 +817,7 @@
     }
 
+    m_mathingItemList.clear();
+    m_iCurrentShownIndex = 0;
+
     UIMediumSearchWidget::SearchType searchType =
         m_pSearchWidget->searchType();
@@ -801,13 +841,34 @@
         if (strMedium.contains(strTerm, Qt::CaseInsensitive))
         {
-            // mark the item
+            /* mark all the items by setting foregroung color to red: */
             for (int j = 0; j < m_pTreeWidget->columnCount(); ++j)
                 m_mediumItemList[i]->setData(j, Qt::ForegroundRole, QBrush(QColor(255, 0, 0)));
-            QModelIndex itemIndex = m_pTreeWidget->itemIndex(m_mediumItemList[i]);
-            if (itemIndex.isValid())
-                m_pTreeWidget->scrollTo(itemIndex);
+            m_mathingItemList.append(m_mediumItemList[i]);
         }
     }
-}
+    if (!m_mathingItemList.isEmpty())
+        scrollToItem(m_mathingItemList[0]);
+}
+
+void UIMediumSelector::scrollToItem(UIMediumItem* pItem)
+{
+    if (!pItem)
+        return;
+
+    QModelIndex itemIndex = m_pTreeWidget->itemIndex(pItem);
+    for (int i = 0; i < m_mediumItemList.size(); ++i)
+    {
+        QFont font = m_mediumItemList[i]->font(0);
+        font.setBold(false);
+        m_mediumItemList[i]->setFont(0, font);
+    }
+    QFont font = pItem->font(0);
+    font.setBold(true);
+    pItem->setFont(0, font);
+
+    m_pTreeWidget->scrollTo(itemIndex);
+    //m_pTreeWidget->setCurrentIndex(itemIndex);
+}
+
 
 #include "UIMediumSelector.moc"
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumSelector.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumSelector.h	(revision 76906)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumSelector.h	(revision 76907)
@@ -70,4 +70,6 @@
     void sltHandleRefresh();
     void sltHandlePerformSearch();
+    void sltHandleShowNextMatchingItem();
+    void sltHandlehowPreviousMatchingItem();
 
  private:
@@ -103,5 +105,5 @@
     void          saveDefaultForeground();
     void          selectMedium(const QUuid &uMediumID);
-
+    void          scrollToItem(UIMediumItem* pItem);
     QWidget              *m_pCentralWidget;
     QVBoxLayout          *m_pMainLayout;
@@ -120,5 +122,10 @@
     QWidget              *m_pParent;
     UIMediumSearchWidget *m_pSearchWidget;
+    /** The list all items added to tree. kept in sync. with tree to make searching easier (faster). */
     QList<UIMediumItem*>  m_mediumItemList;
+    /** List of items that are matching to the search. */
+    QList<UIMediumItem*>  m_mathingItemList;
+    /** Index of the currently shown (scrolled) item in the m_mathingItemList. */
+    int                   m_iCurrentShownIndex;
     QBrush                m_defaultItemForeground;
     QString               m_strMachineSettingsFilePath;
