Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManager.cpp	(revision 75609)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManager.cpp	(revision 75610)
@@ -284,4 +284,6 @@
     {
         m_pOperationsPanel->hide();
+        connect(m_pOperationsPanel, &UIGuestControlFileManagerOperationsPanel::sigFileOperationComplete,
+                this, &UIGuestControlFileManager::sltFileOperationComplete);
         m_panelActionMap.insert(m_pOperationsPanel, m_pActionPool->action(UIActionIndex_M_GuestControlFileManager_T_FileOperations));
     }
@@ -465,18 +467,20 @@
 void UIGuestControlFileManager::sltCopyGuestToHost()
 {
-    if (!m_pGuestFileTable || !m_pHostFileTable)
-        return;
-    QString hostDestinationPath = m_pHostFileTable->currentDirectoryPath();
-    m_pGuestFileTable->copyGuestToHost(hostDestinationPath);
-    m_pHostFileTable->refresh();
+    copyMoveToHost(false);
 }
 
 void UIGuestControlFileManager::sltCopyHostToGuest()
 {
-    if (!m_pGuestFileTable || !m_pHostFileTable)
-        return;
-    QStringList hostSourcePathList = m_pHostFileTable->selectedItemPathList();
-    m_pGuestFileTable->copyHostToGuest(hostSourcePathList);
-    m_pGuestFileTable->refresh();
+    copyMoveToGuest(false);
+}
+
+void UIGuestControlFileManager::sltMoveGuestToHost()
+{
+    copyMoveToHost(true);
+}
+
+void UIGuestControlFileManager::sltMoveHostToGuest()
+{
+    copyMoveToGuest(true);
 }
 
@@ -514,4 +518,37 @@
     if (m_pOperationsPanel)
         m_pOperationsPanel->addNewProgress(comProgress);
+}
+
+void UIGuestControlFileManager::sltFileOperationComplete(QUuid progressId)
+{
+    if (m_pGuestFileTable)
+    {
+        m_pGuestFileTable->refresh();
+        /* The following call deletes file objects whose paths have been cached for later deletion: */
+        m_pGuestFileTable->continueWithMove(progressId);
+    }
+
+    if (m_pHostFileTable)
+    {
+        m_pHostFileTable->refresh();
+    }
+}
+
+void UIGuestControlFileManager::copyMoveToHost(bool fIsMove)
+{
+    if (!m_pGuestFileTable || !m_pHostFileTable)
+        return;
+    QString hostDestinationPath = m_pHostFileTable->currentDirectoryPath();
+    m_pGuestFileTable->copyGuestToHost(hostDestinationPath, fIsMove);
+    m_pHostFileTable->refresh();
+}
+
+void UIGuestControlFileManager::copyMoveToGuest(bool fIsMove)
+{
+    if (!m_pGuestFileTable || !m_pHostFileTable)
+        return;
+    QStringList hostSourcePathList = m_pHostFileTable->selectedItemPathList();
+    m_pGuestFileTable->copyHostToGuest(hostSourcePathList, fIsMove);
+    m_pGuestFileTable->refresh();
 }
 
@@ -683,5 +720,5 @@
             iterator.value()->setChecked(false);
     }
-    m_visiblePanelsList.removeOne(panel);
+    m_visiblePanelsList.removeAll(panel);
     manageEscapeShortCut();
 }
@@ -697,5 +734,6 @@
             iterator.value()->setChecked(true);
     }
-    m_visiblePanelsList.push_back(panel);
+    if (!m_visiblePanelsList.contains(panel))
+        m_visiblePanelsList.push_back(panel);
     manageEscapeShortCut();
 }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManager.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManager.h	(revision 75609)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManager.h	(revision 75610)
@@ -110,7 +110,10 @@
     void sltCopyGuestToHost();
     void sltCopyHostToGuest();
+    void sltMoveGuestToHost();
+    void sltMoveHostToGuest();
     void sltPanelActionToggled(bool fChecked);
     void sltListDirectoriesBeforeChanged();
     void sltReceieveNewFileOperation(const CProgress &comProgress);
+    void sltFileOperationComplete(QUuid progressId);
 
 private:
@@ -149,8 +152,10 @@
         - assigned it to the most recently "unhidden" panel */
     void manageEscapeShortCut();
-
+    void copyMoveToGuest(bool fIsMove);
+    void copyMoveToHost(bool fIsMove);
     template<typename T>
     QStringList               getFsObjInfoStringList(const T &fsObjectInfo) const;
     void                      appendLog(const QString &strLog, FileManagerLogType eLogType);
+
     CGuest                    m_comGuest;
     CGuestSession             m_comGuestSession;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerOperationsPanel.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerOperationsPanel.cpp	(revision 75609)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerOperationsPanel.cpp	(revision 75610)
@@ -55,4 +55,8 @@
     ~UIFileOperationProgressWidget();
 
+signals:
+
+    void sigProgressTaskComplete(QUuid progressId);
+
 protected:
 
@@ -121,13 +125,15 @@
     if (m_pCancelButton)
     {
-        m_pCancelButton->setIcon(UIIconPool::iconSet(":/close_16px.png"));
-
+        //m_pCancelButton->setIcon(UIIconPool::iconSet(":/close_16px.png"));
+        m_pCancelButton->setIcon(QApplication::style()->standardIcon(QStyle::SP_DockWidgetCloseButton));
+        //m_pCancelButton->setStyleSheet("QToolButton { border: 0px none black; margin: 0px 0px 0px 0px; } QToolButton::menu-indicator {image: none;}");
+        m_pCancelButton->setStyleSheet("QToolButton { border: 0px none black; margin: 0px 0px 0px 0px; } ");
         const QSize sh = m_pCancelButton->sizeHint();
-        m_pCancelButton->setStyleSheet("QToolButton { border: 0px none black; margin: 0px 0px 0px 0px; } QToolButton::menu-indicator {image: none;}");
         m_pCancelButton->setFixedSize(sh);
+
         connect(m_pCancelButton, &QIToolButton::clicked, this, &UIFileOperationProgressWidget::sltCancelProgress);
-        if (!m_comProgress.GetCancelable())
+        if (!m_comProgress.isNull() && !m_comProgress.GetCancelable())
             m_pCancelButton->setEnabled(false);
-        m_pMainLayout->addWidget(m_pCancelButton, 0, Qt::AlignLeft | Qt::AlignTop);
+        m_pMainLayout->addWidget(m_pCancelButton);
     }
 
@@ -147,4 +153,6 @@
 void UIFileOperationProgressWidget::prepareEventHandler()
 {
+    if (m_comProgress.isNull())
+        return;
     m_pEventHandler = new UIProgressEventHandler(this, m_comProgress);
     connect(m_pEventHandler, &UIProgressEventHandler::sigProgressPercentageChange,
@@ -172,4 +180,5 @@
     if (m_pCancelButton)
         m_pCancelButton->setEnabled(false);
+    emit sigProgressTaskComplete(m_comProgress.GetId());
 }
 
@@ -191,5 +200,4 @@
     : UIGuestControlFileManagerPanel(pManagerWidget, pParent)
     , m_pTableWidget(0)
-    , m_pOperationsWidget(0)
 {
     prepare();
@@ -202,5 +210,9 @@
 
     m_pTableWidget->setRowCount(m_pTableWidget->rowCount() + 1);
-    m_pTableWidget->setCellWidget(m_pTableWidget->rowCount() - 1, 0, new UIFileOperationProgressWidget(comProgress));
+    UIFileOperationProgressWidget *pOperationsWidget = new UIFileOperationProgressWidget(comProgress);
+    m_pTableWidget->setCellWidget(m_pTableWidget->rowCount() - 1, 0, pOperationsWidget);
+    connect(pOperationsWidget, &UIFileOperationProgressWidget::sigProgressTaskComplete,
+            this, &UIGuestControlFileManagerOperationsPanel::sigFileOperationComplete);
+
     m_pTableWidget->resizeColumnsToContents();
 }
@@ -231,4 +243,5 @@
 void UIGuestControlFileManagerOperationsPanel::prepareConnections()
 {
+
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerOperationsPanel.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerOperationsPanel.h	(revision 75609)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerOperationsPanel.h	(revision 75610)
@@ -19,4 +19,7 @@
 #define ___UIGuestControlFileManagerOperationsPanel_h___
 
+/* Qt includes: */
+# include <QUuid>
+
 /* GUI includes: */
 #include "UIGuestControlDefs.h"
@@ -35,4 +38,8 @@
 {
     Q_OBJECT;
+
+signals:
+
+    void sigFileOperationComplete(QUuid progressId);
 
 public:
@@ -68,5 +75,4 @@
       * @{ */
         QTableWidget *m_pTableWidget;
-        UIFileOperationProgressWidget *m_pOperationsWidget;
     /** @} */
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileTable.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileTable.cpp	(revision 75609)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileTable.cpp	(revision 75610)
@@ -1360,4 +1360,10 @@
 }
 
+void UIGuestControlFileTable::continueWithMove(const QUuid &progressId)
+{
+    QStringList sourcePathList = m_deleteAfterCopyCache.value(progressId);
+    deleteByPath(m_deleteAfterCopyCache.value(progressId, QStringList()));
+}
+
 void UIGuestControlFileTable::sltReceiveDirectoryStatistics(UIDirectoryStatistics statistics)
 {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileTable.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileTable.h	(revision 75609)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileTable.h	(revision 75610)
@@ -262,4 +262,6 @@
     static const unsigned    m_iKiloByte;
     static QString humanReadableSize(ULONG64 size);
+    /** Deletes the file objects whose stored in the m_pDeleteAfterCopyCache */
+    void continueWithMove(const QUuid &progressId);
 
 public slots:
@@ -293,4 +295,5 @@
     virtual void     readDirectory(const QString& strPath, UIFileTableItem *parent, bool isStartDir = false) = 0;
     virtual void     deleteByItem(UIFileTableItem *item) = 0;
+    virtual void     deleteByPath(const QStringList &pathList) = 0;
     virtual void     goToHomeDirectory() = 0;
     virtual bool     renameItem(UIFileTableItem *item, QString newBaseName) = 0;
@@ -329,4 +332,7 @@
     /** The set of actions which need some selection to work on. Like cut, copy etc. */
     QSet<QAction*> m_selectionDependentActions;
+    /** Paths of the source file objects are stored in this map to delete those
+     * after the copy progress completed notification is receieved */
+    QMap<QUuid, QStringList>  m_deleteAfterCopyCache;
 
 private slots:
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestFileTable.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestFileTable.cpp	(revision 75609)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestFileTable.cpp	(revision 75610)
@@ -23,4 +23,5 @@
 # include <QDateTime>
 # include <QFileInfo>
+# include <QUuid>
 
 /* GUI includes: */
@@ -228,5 +229,4 @@
         insertItemsToTree(directories, parent, true, isStartDir);
         insertItemsToTree(files, parent, false, isStartDir);
-        //updateCurrentLocationEdit(strPath);
     }
     directory.Close();
@@ -251,4 +251,23 @@
         emit sigLogOutput(QString(item->path()).append(" could not be deleted"), FileManagerLogType_Error);
         emit sigLogOutput(UIErrorString::formatErrorInfo(m_comGuestSession), FileManagerLogType_Error);
+    }
+}
+
+void UIGuestFileTable::deleteByPath(const QStringList &pathList)
+{
+    foreach (const QString &strPath, pathList)
+    {
+        CGuestFsObjInfo fileInfo = m_comGuestSession.FsObjQueryInfo(strPath, true);
+        FileObjectType eType = fileType(fileInfo);
+        if (eType == FileObjectType_File || eType == FileObjectType_SymLink)
+        {
+              m_comGuestSession.FsObjRemove(strPath);
+        }
+        else if (eType == FileObjectType_Directory)
+        {
+            QVector<KDirectoryRemoveRecFlag> flags(KDirectoryRemoveRecFlag_ContentAndDir);
+            m_comGuestSession.DirectoryRemoveRecursive(strPath, flags);
+        }
+
     }
 }
@@ -310,5 +329,5 @@
 }
 
-void UIGuestFileTable::copyHostToGuest(const QStringList &hostSourcePathList)
+void UIGuestFileTable::copyHostToGuest(const QStringList &hostSourcePathList, bool fDeleteAfterSuccessfulCopy /* = false */)
 {
     QVector<QString> sourcePaths = hostSourcePathList.toVector();
@@ -334,8 +353,11 @@
     }
     emit sigNewFileOperation(progress);
-    refresh();
-}
-
-void UIGuestFileTable::copyGuestToHost(const QString& hostDestinationPath)
+    /* Cache the progress id and host source file objects' path in case of move operation. we will delete
+     * these when/if we receieve progress completed notification: */
+    if (fDeleteAfterSuccessfulCopy)
+        emit sigCacheHostFileObjectsForDeletion(progress.GetId(), sourcePaths.toList());
+}
+
+void UIGuestFileTable::copyGuestToHost(const QString& hostDestinationPath, bool fDeleteAfterSuccessfulCopy /* = false */)
 {
     QVector<QString> sourcePaths = selectedItemPathList().toVector();
@@ -361,5 +383,8 @@
     }
     emit sigNewFileOperation(progress);
-    refresh();
+    /* Cache the progress id and source file objects' path in case of move operation. we will delete
+     * these when/if we receieve progress completed notification: */
+    if (fDeleteAfterSuccessfulCopy)
+        m_deleteAfterCopyCache[progress.GetId()] = sourcePaths.toList();
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestFileTable.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestFileTable.h	(revision 75609)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestFileTable.h	(revision 75610)
@@ -18,4 +18,7 @@
 #ifndef ___UIGuestTable_h___
 #define ___UIGuestTable_h___
+
+/* Qt includes: */
+# include <QUuid>
 
 /* COM includes: */
@@ -39,10 +42,11 @@
     UIGuestFileTable(UIActionPool *pActionPool, QWidget *pParent = 0);
     void initGuestFileTable(const CGuestSession &session);
-    void copyGuestToHost(const QString& hostDestinationPath);
-    void copyHostToGuest(const QStringList &hostSourcePathList);
+    void copyGuestToHost(const QString& hostDestinationPath, bool fDeleteAfterSuccessfulCopy = false);
+    void copyHostToGuest(const QStringList &hostSourcePathList, bool fDeleteAfterSuccessfulCopy = false);
 
 signals:
 
     void sigNewFileOperation(const CProgress &comProgress);
+    void sigCacheHostFileObjectsForDeletion(const QUuid &moveProgessId, const QStringList &hostPathList);
 
 protected:
@@ -51,4 +55,5 @@
     virtual void    readDirectory(const QString& strPath, UIFileTableItem *parent, bool isStartDir = false) /* override */;
     virtual void    deleteByItem(UIFileTableItem *item) /* override */;
+    virtual void    deleteByPath(const QStringList &pathList) /* override */;
     virtual void    goToHomeDirectory() /* override */;
     virtual bool    renameItem(UIFileTableItem *item, QString newBaseName);
@@ -67,6 +72,5 @@
     void prepareActionConnections();
 
-    mutable CGuestSession m_comGuestSession;
-
+    mutable CGuestSession     m_comGuestSession;
 };
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIHostFileTable.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIHostFileTable.cpp	(revision 75609)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIHostFileTable.cpp	(revision 75610)
@@ -132,4 +132,9 @@
     prepareActionConnections();
     retranslateUi();
+}
+
+void UIHostFileTable::setDeleteAfterCopyCache(const QUuid &progressId, const QStringList &sourceObjectsList)
+{
+    m_deleteAfterCopyCache[progressId] = sourceObjectsList;
 }
 
@@ -257,5 +262,5 @@
     if (!item->isDirectory())
     {
-        QDir itemToDelete;//(item->path());
+        QDir itemToDelete;
         itemToDelete.remove(item->path());
     }
@@ -271,4 +276,25 @@
      if (!deleteSuccess)
          emit sigLogOutput(QString(item->path()).append(" could not be deleted"), FileManagerLogType_Error);
+}
+
+void UIHostFileTable::deleteByPath(const QStringList &pathList)
+{
+    foreach (const QString &strPath, pathList)
+    {
+        bool deleteSuccess = true;
+        FileObjectType eType = fileType(QFileInfo(strPath));
+        if (eType == FileObjectType_File || eType == FileObjectType_SymLink)
+        {
+            deleteSuccess = QDir().remove(strPath);
+        }
+        else if (eType == FileObjectType_Directory)
+        {
+            QDir itemToDelete(strPath);
+            itemToDelete.setFilter(QDir::NoDotAndDotDot);
+            deleteSuccess = itemToDelete.removeRecursively();
+        }
+        if (!deleteSuccess)
+            emit sigLogOutput(QString(strPath).append(" could not be deleted"), FileManagerLogType_Error);
+    }
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIHostFileTable.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIHostFileTable.h	(revision 75609)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIHostFileTable.h	(revision 75610)
@@ -34,4 +34,5 @@
 
     UIHostFileTable(UIActionPool *pActionPool, QWidget *pParent = 0);
+    void setDeleteAfterCopyCache(const QUuid &progressId, const QStringList &sourceObjectsList);
 
 protected:
@@ -41,4 +42,5 @@
     virtual void    readDirectory(const QString& strPath, UIFileTableItem *parent, bool isStartDir = false) /* override */;
     virtual void    deleteByItem(UIFileTableItem *item) /* override */;
+    virtual void    deleteByPath(const QStringList &pathList) /* override */;
     virtual void    goToHomeDirectory() /* override */;
     virtual bool    renameItem(UIFileTableItem *item, QString newBaseName);
