diff --git a/vncviewer/FTDialog.cxx b/vncviewer/FTDialog.cxx
index 4045470..8734060 100644
--- a/vncviewer/FTDialog.cxx
+++ b/vncviewer/FTDialog.cxx
@@ -431,15 +431,19 @@
 void 
 FTDialog::onLocalDelete()
 {
-  MessageBox(NULL, "onLocalDelete", "FTDialog", MB_OK);
-
+  FileInfo fi;
+  if (m_pLocalLV->getSelectedItems(&fi) > 0) {
+    m_pFileTransfer->addDeleteQueue(m_szLocalPath, &fi, FT_ATTR_DELETE_LOCAL);
+  }
 }
 
 void 
 FTDialog::onRemoteDelete()
 {
-  MessageBox(NULL, "onRemoteDelete", "FTDialog", MB_OK);
-
+  FileInfo fi;
+  if (m_pRemoteLV->getSelectedItems(&fi) > 0) {
+    m_pFileTransfer->addDeleteQueue(m_szRemotePath, &fi, FT_ATTR_DELETE_REMOTE);
+  }
 }
 
 void 
diff --git a/vncviewer/FileTransfer.cxx b/vncviewer/FileTransfer.cxx
index fe08dd8..a9c4738 100644
--- a/vncviewer/FileTransfer.cxx
+++ b/vncviewer/FileTransfer.cxx
@@ -46,6 +46,8 @@
     delete m_pFTDialog;
     m_pFTDialog = NULL;
   }
+  
+  freeQueues();
 }
 
 bool 
@@ -56,7 +58,7 @@
   m_pReader = new FTMsgReader(pIS);
   m_pWriter = new FTMsgWriter(pOS);
 
-  m_TransferQueue.free();
+  freeQueues();
 
   m_bInitialized = true;
   return true;
@@ -103,6 +105,20 @@
 }
 
 void 
+FileTransfer::addDeleteQueue(char *pPathPrefix, FileInfo *pFI, unsigned int flags)
+{
+  m_DeleteQueue.add(pPathPrefix, "", pFI, flags);
+
+  checkDeleteQueue();
+}
+
+void
+FileTransfer::checkDeleteQueue()
+{
+
+}
+
+void 
 FileTransfer::addTransferQueue(char *pLocalPath, char *pRemotePath, 
                                FileInfo *pFI, unsigned int flags)
 {
@@ -388,10 +404,17 @@
 int
 FileTransfer::isExistName(FileInfo *pFI, char *pName)
 {
-  for (int i = 0; i < pFI->getNumEntries(); i++) {
+  for (unsigned int i = 0; i < pFI->getNumEntries(); i++) {
     if (strcmp(pFI->getNameAt(i), pName) == 0) {
       return i;
     }
   }
   return -1;
 }
+
+void
+FileTransfer::freeQueues()
+{
+  m_TransferQueue.free();
+  m_DeleteQueue.free();
+}
diff --git a/vncviewer/FileTransfer.h b/vncviewer/FileTransfer.h
index dcc78c7..7652edb 100644
--- a/vncviewer/FileTransfer.h
+++ b/vncviewer/FileTransfer.h
@@ -53,9 +53,14 @@
 
       void addTransferQueue(char *pLocalPath, char *pRemotePath, 
                             FileInfo *pFI, unsigned int flags);
+      void addDeleteQueue(char *pPathPrefix, FileInfo *pFI, 
+                          unsigned int flags);
 
       bool isTransferEnable();
+
       void checkTransferQueue();
+      void checkDeleteQueue();
+
       void uploadFilePortion();
       void downloadFilePortion();
 
@@ -74,12 +79,14 @@
       FileInfo m_queueFileListRqst;
 
       TransferQueue m_TransferQueue;
+      TransferQueue m_DeleteQueue;
 
       bool resizeSending();
       bool uploadFile();
       bool downloadFile();
 
-      int isExistName(FileInfo *pFI, char *pName);
+      int  isExistName(FileInfo *pFI, char *pName);
+      void freeQueues();
       
       bool procFileListDataMsg();
       bool procFileDownloadDataMsg();
