Index: /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIComboBox.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIComboBox.h	(revision 71508)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIComboBox.h	(revision 71509)
@@ -128,3 +128,2 @@
 
 #endif /* !___QIComboBox_h___ */
-
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIGuestControlFileTable.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIGuestControlFileTable.cpp	(revision 71508)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIGuestControlFileTable.cpp	(revision 71509)
@@ -22,4 +22,5 @@
 /* Qt includes: */
 # include <QAction>
+# include <QComboBox>
 # include <QDateTime>
 # include <QDir>
@@ -649,5 +650,5 @@
     , m_pPaste(0)
     , m_pMainLayout(0)
-    , m_pCurrentLocationEdit(0)
+    , m_pLocationComboBox(0)
     , m_pToolBar(0)
     , m_pGoUp(0)
@@ -676,6 +677,12 @@
     if (m_pModel)
         m_pModel->endReset();
-    if (m_pCurrentLocationEdit)
-        m_pCurrentLocationEdit->clear();
+    if (m_pLocationComboBox)
+    {
+        disconnect(m_pLocationComboBox, static_cast<void(QComboBox::*)(const QString&)>(&QComboBox::currentIndexChanged),
+                   this, &UIGuestControlFileTable::sltLocationComboCurrentChange);
+        m_pLocationComboBox->clear();
+        connect(m_pLocationComboBox, static_cast<void(QComboBox::*)(const QString&)>(&QComboBox::currentIndexChanged),
+                this, &UIGuestControlFileTable::sltLocationComboCurrentChange);
+    }
 }
 
@@ -706,10 +713,13 @@
     }
 
-    m_pCurrentLocationEdit = new QILineEdit;
-    if (m_pCurrentLocationEdit)
-    {
-        m_pMainLayout->addWidget(m_pCurrentLocationEdit, 1, 1, 1, 4);
-        m_pCurrentLocationEdit->setReadOnly(true);
-    }
+    m_pLocationComboBox = new QComboBox;
+    if (m_pLocationComboBox)
+    {
+        m_pMainLayout->addWidget(m_pLocationComboBox, 1, 1, 1, 4);
+        m_pLocationComboBox->setEditable(false);
+        connect(m_pLocationComboBox, static_cast<void(QComboBox::*)(const QString&)>(&QComboBox::currentIndexChanged),
+                this, &UIGuestControlFileTable::sltLocationComboCurrentChange);
+    }
+
 
     m_pModel = new UIGuestControlFileModel(this);
@@ -860,7 +870,14 @@
 void UIGuestControlFileTable::updateCurrentLocationEdit(const QString& strLocation)
 {
-    if (!m_pCurrentLocationEdit)
-        return;
-    m_pCurrentLocationEdit->setText(strLocation);
+    if (!m_pLocationComboBox)
+        return;
+    int itemIndex = m_pLocationComboBox->findText(strLocation,
+                                                  Qt::MatchExactly | Qt::MatchCaseSensitive);
+    if (itemIndex == -1)
+    {
+        m_pLocationComboBox->insertItem(m_pLocationComboBox->count(), strLocation);
+        itemIndex = m_pLocationComboBox->count() - 1;
+    }
+    m_pLocationComboBox->setCurrentIndex(itemIndex);
 }
 
@@ -885,20 +902,21 @@
         reset();
 
+    const QString startPath("/");
     QList<QVariant> headData;
     headData << "Name" << "Size" << "Change Time" << "Owner";
     m_pRootItem = new UIFileTableItem(headData, 0, FileObjectType_Directory);
     QList<QVariant> startDirData;
-    startDirData << "/" << 4096 << QDateTime() << "";
+    startDirData << startPath << 4096 << QDateTime() << "";
     UIFileTableItem* startItem = new UIFileTableItem(startDirData, m_pRootItem, FileObjectType_Directory);
 
-    startItem->setPath("/");
+    startItem->setPath(startPath);
     m_pRootItem->appendChild(startItem);
 
     startItem->setIsOpened(false);
     /* Read the root directory and get the list: */
-    readDirectory("/", startItem, true);
+    readDirectory(startPath, startItem, true);
     m_pView->setRootIndex(m_pModel->rootIndex());
     m_pModel->signalUpdate();
-
+    updateCurrentLocationEdit(startPath);
 }
 
@@ -1151,4 +1169,14 @@
 }
 
+void UIGuestControlFileTable::sltLocationComboCurrentChange(const QString &strLocation)
+{
+    QString comboLocation(UIPathOperations::sanitize(strLocation));
+    if (comboLocation == currentDirectoryPath())
+        return;
+
+    QList<QString> pathList = comboLocation.split(UIPathOperations::delimiter, QString::SkipEmptyParts);
+    goIntoDirectory(pathList);
+}
+
 void UIGuestControlFileTable::deleteByIndex(const QModelIndex &itemIndex)
 {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIGuestControlFileTable.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIGuestControlFileTable.h	(revision 71508)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIGuestControlFileTable.h	(revision 71509)
@@ -35,4 +35,5 @@
 class QFileInfo;
 
+class QComboBox;
 class QILabel;
 class QILineEdit;
@@ -258,4 +259,5 @@
     void sltCreateNewDirectory();
     void sltSelectionChanged(const QItemSelection & selected, const QItemSelection & deselected);
+    void sltLocationComboCurrentChange(const QString &strLocation);
 
 private:
@@ -271,5 +273,5 @@
     void            disableSelectionDependentActions();
     QGridLayout     *m_pMainLayout;
-    QILineEdit      *m_pCurrentLocationEdit;
+    QComboBox       *m_pLocationComboBox;
     UIToolBar       *m_pToolBar;
     QAction         *m_pGoUp;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIGuestFileTable.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIGuestFileTable.cpp	(revision 71508)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIGuestFileTable.cpp	(revision 71509)
@@ -116,5 +116,5 @@
         insertItemsToTree(directories, parent, true, isStartDir);
         insertItemsToTree(files, parent, false, isStartDir);
-        updateCurrentLocationEdit(strPath);
+        //updateCurrentLocationEdit(strPath);
     }
     directory.Close();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIHostFileTable.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIHostFileTable.cpp	(revision 71508)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIHostFileTable.cpp	(revision 71509)
@@ -198,5 +198,5 @@
     insertItemsToTree(directories, parent, true, isStartDir);
     insertItemsToTree(files, parent, false, isStartDir);
-    updateCurrentLocationEdit(strPath);
+    //updateCurrentLocationEdit(strPath);
 }
 
