diff --git a/vncviewer/FTDialog.cxx b/vncviewer/FTDialog.cxx
index d958f5b..a4fd9a6 100644
--- a/vncviewer/FTDialog.cxx
+++ b/vncviewer/FTDialog.cxx
@@ -34,7 +34,9 @@
 {
   m_pFileTransfer = pFT;
   m_hInstance = hInst;
+
   m_bDlgShown = false;
+  m_bCloseDlgAfterCancel = false;
 
   m_pLocalLV = NULL;
   m_pRemoteLV = NULL;
@@ -65,6 +67,8 @@
   if (m_hwndFTDialog != NULL) {
     ShowWindow(m_hwndFTDialog, SW_SHOW);
     m_bDlgShown = true;
+    showLocalLVItems();
+    showRemoteLVItems();
     return true;
   }
 
@@ -200,7 +204,7 @@
         }
         break;
       case IDC_FTCLOSE:
-        _this->closeFTDialog();
+        _this->onClose();
         return FALSE;
       case IDC_FTLOCALUP:
         _this->setButtonsState();
@@ -280,8 +284,7 @@
     }
     break;
     case WM_CLOSE:
-    case WM_DESTROY:
-      _this->closeFTDialog();
+      _this->onClose();
       return FALSE;
   }
 
@@ -299,6 +302,17 @@
   return FALSE;
 }
 
+void
+FTDialog::onClose()
+{
+  if (m_pFileTransfer->isTransferEnable()) {
+    m_bCloseDlgAfterCancel = true;
+    onFTCancel();
+  } else {
+    closeFTDialog();
+  }  
+}
+
 void 
 FTDialog::onLocalItemActivate(LPNMITEMACTIVATE lpnmia)
 {
@@ -409,7 +423,7 @@
   if (m_pLocalLV->getSelectedItems(&fi) > 0) {
     m_pFileTransfer->addTransferQueue(m_szLocalPath, m_szRemotePath, &fi, FT_ATTR_COPY_UPLOAD);
   }
-  refreshBtnState();
+  setButtonsState();
 }
 
 void 
@@ -419,7 +433,7 @@
   if (m_pRemoteLV->getSelectedItems(&fi) > 0) {
     m_pFileTransfer->addTransferQueue(m_szLocalPath, m_szRemotePath, &fi, FT_ATTR_COPY_DOWNLOAD);
   }
-  refreshBtnState();
+  setButtonsState();
 }
 
 void 
@@ -443,7 +457,7 @@
   if (m_pLocalLV->getSelectedItems(&fi) > 0) {
     m_pFileTransfer->addDeleteQueue(m_szLocalPath, &fi, FT_ATTR_DELETE_LOCAL);
   }
-  refreshBtnState();
+  setButtonsState();
 }
 
 void 
@@ -453,7 +467,7 @@
   if (m_pRemoteLV->getSelectedItems(&fi) > 0) {
     m_pFileTransfer->addDeleteQueue(m_szRemotePath, &fi, FT_ATTR_DELETE_REMOTE);
   }
-  refreshBtnState();
+  setButtonsState();
 }
 
 void 
@@ -474,7 +488,23 @@
     m_pCancelingDlg = NULL;
   }
 
-  MessageBox(NULL, "FTDialog::cancelTransfer()", "FTDialog::cancelTransfer()", MB_OK);
+  setButtonsState();
+
+  if ((m_bCloseDlgAfterCancel) && (bResult)) {
+    m_bCloseDlgAfterCancel = false;
+    closeFTDialog();
+  }
+
+  m_pFileTransfer->m_bCancel = bResult;
+}
+
+void 
+FTDialog::afterCancelTransfer()
+{
+  if (m_pCancelingDlg != NULL) {
+    delete m_pCancelingDlg;
+    m_pCancelingDlg = NULL;
+  }
 }
 
 void
@@ -688,6 +718,8 @@
   case false: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTCANCEL), FALSE); break;
   case true: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTCANCEL), TRUE); break;
   }
+
+  UpdateWindow(m_hwndFTDialog);
 }
 
 void 
