Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoBrowserBase.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoBrowserBase.cpp	(revision 76761)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoBrowserBase.cpp	(revision 76762)
@@ -32,5 +32,4 @@
     : QWidget(pParent)
     , m_pTreeView(0)
-    , m_pTableView(0)
     , m_pTitleLabel(0)
     , m_pRightContainerWidget(0)
@@ -94,27 +93,4 @@
     }
 
-    m_pTableView = new QTableView;
-    if (m_pTableView)
-    {
-        m_pRightContainerLayout->addWidget(m_pTableView, 0, 0, 6, 4);
-        m_pTableView->setSelectionMode(QAbstractItemView::ContiguousSelection);
-        m_pTableView->setShowGrid(false);
-        m_pTableView->setSelectionBehavior(QAbstractItemView::SelectRows);
-        m_pTableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
-        m_pTableView->setAlternatingRowColors(true);
-        QHeaderView *pVerticalHeader = m_pTableView->verticalHeader();
-        if (pVerticalHeader)
-        {
-            m_pTableView->verticalHeader()->setVisible(false);
-            /* Minimize the row height: */
-            m_pTableView->verticalHeader()->setDefaultSectionSize(m_pTableView->verticalHeader()->minimumSectionSize());
-        }
-        QHeaderView *pHorizontalHeader = m_pTableView->horizontalHeader();
-        if (pHorizontalHeader)
-        {
-            pHorizontalHeader->setHighlightSections(false);
-            pHorizontalHeader->setSectionResizeMode(QHeaderView::Stretch);
-        }
-    }
 
     m_pVerticalToolBar = new UIToolBar;
@@ -135,7 +111,4 @@
 void UIVisoBrowserBase::prepareConnections()
 {
-    if (m_pTableView)
-        connect(m_pTableView, &QTableView::doubleClicked,
-                this, &UIVisoBrowserBase::sltHandleTableViewItemDoubleClick);
     if (m_pTreeView)
     {
@@ -154,6 +127,4 @@
 void UIVisoBrowserBase::sltHandleTreeSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
 {
-    if (!m_pTableView)
-        return;
     Q_UNUSED(deselected);
     QModelIndexList indices = selected.indexes();
@@ -163,4 +134,5 @@
     treeSelectionChanged(selectedIndex);
 }
+
 
 void UIVisoBrowserBase::sltHandleTreeItemClicked(const QModelIndex &modelIndex)
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoBrowserBase.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoBrowserBase.h	(revision 76761)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoBrowserBase.h	(revision 76762)
@@ -46,4 +46,8 @@
     virtual void showHideHiddenObjects(bool bShow) = 0;
 
+public slots:
+
+    void sltHandleTableViewItemDoubleClick(const QModelIndex &index);
+
 protected:
 
@@ -58,5 +62,4 @@
 
     QTreeView          *m_pTreeView;
-    QTableView         *m_pTableView;
     QLabel             *m_pTitleLabel;
     QWidget            *m_pRightContainerWidget;
@@ -69,5 +72,5 @@
 
 private slots:
-    void sltHandleTableViewItemDoubleClick(const QModelIndex &index);
+
     void sltHandleTreeSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
     void sltHandleTreeItemClicked(const QModelIndex &modelIndex);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoContentBrowser.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoContentBrowser.cpp	(revision 76761)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoContentBrowser.cpp	(revision 76762)
@@ -27,4 +27,5 @@
 #include <QLabel>
 #include <QListView>
+#include <QMimeData>
 #include <QSplitter>
 #include <QTableView>
@@ -39,4 +40,26 @@
 
 
+
+/*********************************************************************************************************************************
+*   UIVisoContentTableView definition.                                                                                      *
+*********************************************************************************************************************************/
+/** An QTableView extension mainly used to handle dropeed file objects from the host browser. */
+class UIVisoContentTableView : public QTableView
+{
+    Q_OBJECT;
+
+signals:
+
+    void sigNewItemsDropped(QStringList pathList);
+
+public:
+
+    UIVisoContentTableView(QWidget *pParent = 0);
+    void dragEnterEvent(QDragEnterEvent *event);
+    void dropEvent(QDropEvent *event);
+    void dragMoveEvent(QDragMoveEvent *event);
+};
+
+
 /*********************************************************************************************************************************
 *   UIVisoContentTreeProxyModel definition.                                                                                      *
@@ -56,6 +79,45 @@
     /** Used to filter-out files and show only directories. */
     virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const /* override */;
-
 };
+
+
+/*********************************************************************************************************************************
+*   UIVisoContentTableView implementation.                                                                                       *
+*********************************************************************************************************************************/
+UIVisoContentTableView::UIVisoContentTableView(QWidget *pParent /* = 0 */)
+    :QTableView(pParent)
+{
+}
+
+void UIVisoContentTableView::dragMoveEvent(QDragMoveEvent *event)
+{
+    event->acceptProposedAction();
+
+}
+
+void UIVisoContentTableView::dragEnterEvent(QDragEnterEvent *pEvent)
+{
+    if (pEvent->mimeData()->hasFormat("application/vnd.text.list"))
+        pEvent->accept();
+    else
+        pEvent->ignore();
+}
+
+void UIVisoContentTableView::dropEvent(QDropEvent *pEvent)
+{
+    if (pEvent->mimeData()->hasFormat("application/vnd.text.list"))
+    {
+        QByteArray itemData = pEvent->mimeData()->data("application/vnd.text.list");
+        QDataStream stream(&itemData, QIODevice::ReadOnly);
+        QStringList pathList;
+
+        while (!stream.atEnd()) {
+            QString text;
+            stream >> text;
+            pathList << text;
+        }
+        emit sigNewItemsDropped(pathList);
+    }
+}
 
 
@@ -94,4 +156,5 @@
 UIVisoContentBrowser::UIVisoContentBrowser(QWidget *pParent)
     : QIWithRetranslateUI<UIVisoBrowserBase>(pParent)
+    , m_pTableView(0)
     , m_pModel(0)
     , m_pTableProxyModel(0)
@@ -342,6 +405,27 @@
     }
 
+    m_pTableView = new UIVisoContentTableView;
     if (m_pTableView)
     {
+        m_pRightContainerLayout->addWidget(m_pTableView, 0, 0, 6, 4);
+        m_pTableView->setSelectionMode(QAbstractItemView::ContiguousSelection);
+        m_pTableView->setShowGrid(false);
+        m_pTableView->setSelectionBehavior(QAbstractItemView::SelectRows);
+        m_pTableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
+        m_pTableView->setAlternatingRowColors(true);
+        QHeaderView *pVerticalHeader = m_pTableView->verticalHeader();
+        if (pVerticalHeader)
+        {
+            m_pTableView->verticalHeader()->setVisible(false);
+            /* Minimize the row height: */
+            m_pTableView->verticalHeader()->setDefaultSectionSize(m_pTableView->verticalHeader()->minimumSectionSize());
+        }
+        QHeaderView *pHorizontalHeader = m_pTableView->horizontalHeader();
+        if (pHorizontalHeader)
+        {
+            pHorizontalHeader->setHighlightSections(false);
+            pHorizontalHeader->setSectionResizeMode(QHeaderView::Stretch);
+        }
+
         m_pTableView->setModel(m_pTableProxyModel);
         setTableRootIndex();
@@ -353,4 +437,9 @@
         m_pTableView->setSortingEnabled(true);
         m_pTableView->sortByColumn(0, Qt::AscendingOrder);
+
+        m_pTableView->setDragEnabled(false);
+        m_pTableView->setAcceptDrops(true);
+        m_pTableView->setDropIndicatorShown(true);
+        m_pTableView->setDragDropMode(QAbstractItemView::DropOnly);
     }
 
@@ -397,4 +486,13 @@
 {
     UIVisoBrowserBase::prepareConnections();
+
+    if (m_pTableView)
+    {
+        connect(m_pTableView, &UIVisoContentTableView::doubleClicked,
+                this, &UIVisoBrowserBase::sltHandleTableViewItemDoubleClick);
+        connect(m_pTableView, &UIVisoContentTableView::sigNewItemsDropped,
+                this, &UIVisoContentBrowser::sltHandleDroppedItems);
+    }
+
     if (m_pNewDirectoryAction)
         connect(m_pNewDirectoryAction, &QAction::triggered,
@@ -668,4 +766,9 @@
 }
 
+void UIVisoContentBrowser::sltHandleDroppedItems(QStringList pathList)
+{
+    addObjectsToViso(pathList);
+}
+
 void UIVisoContentBrowser::reset()
 {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoContentBrowser.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoContentBrowser.h	(revision 76761)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoContentBrowser.h	(revision 76762)
@@ -43,4 +43,5 @@
 class UIVisoContentTreeProxyModel;
 class UICustomFileSystemItem;
+class UIVisoContentTableView;
 
 class SHARED_LIBRARY_STUFF UIVisoContentBrowser : public QIWithRetranslateUI<UIVisoBrowserBase>
@@ -79,4 +80,5 @@
     void sltHandleTableSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
     void sltHandleResetAction();
+    void sltHandleDroppedItems(QStringList pathList);
 
 private:
@@ -101,5 +103,5 @@
      *  in the table view. */
     QList<UICustomFileSystemItem*> tableSelectedItems();
-
+    UIVisoContentTableView       *m_pTableView;
     UICustomFileSystemModel      *m_pModel;
     UICustomFileSystemProxyModel *m_pTableProxyModel;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoHostBrowser.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoHostBrowser.cpp	(revision 76761)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoHostBrowser.cpp	(revision 76762)
@@ -20,7 +20,9 @@
 #include <QDir>
 #include <QFileSystemModel>
+#include <QGridLayout>
 #include <QHeaderView>
 #include <QLabel>
 #include <QListView>
+#include <QMimeData>
 #include <QTableView>
 #include <QTreeView>
@@ -44,4 +46,8 @@
     virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const /* override */;
     UIVisoHostBrowserModel(QObject *pParent);
+
+    virtual QStringList mimeTypes() const /* override */;
+    /** Prepares the mime data  as a list of text consisting of dragged objects full file path. */
+    QMimeData *mimeData(const QModelIndexList &indexes) const /* override */;
 
 protected:
@@ -78,4 +84,31 @@
 }
 
+QStringList UIVisoHostBrowserModel::mimeTypes() const
+{
+    QStringList types;
+    types << "application/vnd.text.list";
+    return types;
+}
+
+QMimeData *UIVisoHostBrowserModel::mimeData(const QModelIndexList &indexes) const
+{
+    QMimeData *mimeData = new QMimeData();
+    QByteArray encodedData;
+
+    QDataStream stream(&encodedData, QIODevice::WriteOnly);
+
+    foreach (const QModelIndex &index, indexes) {
+        if (index.isValid() && index.column() == 0)
+        {
+            QString strPath = fileInfo(index).filePath();
+            if (!strPath.contains(".."))
+                stream << fileInfo(index).filePath();
+        }
+    }
+
+    mimeData->setData("application/vnd.text.list", encodedData);
+    return mimeData;
+}
+
 /*********************************************************************************************************************************
 *   UIVisoHostBrowser implementation.                                                                                   *
@@ -87,4 +120,5 @@
     , m_pTableModel(0)
     , m_pAddAction(0)
+    , m_pTableView(0)
 {
     prepareObjects();
@@ -128,10 +162,34 @@
     }
 
+    m_pTableView = new QTableView;
     if (m_pTableView)
     {
+        m_pRightContainerLayout->addWidget(m_pTableView, 0, 0, 6, 4);
+        m_pTableView->setSelectionMode(QAbstractItemView::ContiguousSelection);
+        m_pTableView->setShowGrid(false);
+        m_pTableView->setSelectionBehavior(QAbstractItemView::SelectRows);
+        m_pTableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
+        m_pTableView->setAlternatingRowColors(true);
+        QHeaderView *pVerticalHeader = m_pTableView->verticalHeader();
+        if (pVerticalHeader)
+        {
+            m_pTableView->verticalHeader()->setVisible(false);
+            /* Minimize the row height: */
+            m_pTableView->verticalHeader()->setDefaultSectionSize(m_pTableView->verticalHeader()->minimumSectionSize());
+        }
+        QHeaderView *pHorizontalHeader = m_pTableView->horizontalHeader();
+        if (pHorizontalHeader)
+        {
+            pHorizontalHeader->setHighlightSections(false);
+            pHorizontalHeader->setSectionResizeMode(QHeaderView::Stretch);
+        }
+
         m_pTableView->setModel(m_pTableModel);
         setTableRootIndex();
         /* Hide the "type" column: */
         m_pTableView->hideColumn(2);
+
+        m_pTableView->setSelectionMode(QAbstractItemView::ExtendedSelection);
+        m_pTableView->setDragDropMode(QAbstractItemView::DragOnly);
     }
 
@@ -154,4 +212,8 @@
 {
     UIVisoBrowserBase::prepareConnections();
+    if (m_pTableView)
+        connect(m_pTableView, &QTableView::doubleClicked,
+                this, &UIVisoBrowserBase::sltHandleTableViewItemDoubleClick);
+
     if (m_pTableView->selectionModel())
         connect(m_pTableView->selectionModel(), &QItemSelectionModel::selectionChanged,
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoHostBrowser.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoHostBrowser.h	(revision 76761)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoHostBrowser.h	(revision 76762)
@@ -71,4 +71,6 @@
     UIVisoHostBrowserModel *m_pTableModel;
     QAction                *m_pAddAction;
+    QTableView             *m_pTableView;
+
 };
 
