diff --git a/vncviewer/FTDialog.cxx b/vncviewer/FTDialog.cxx
index 72dd6ae..b37554f 100644
--- a/vncviewer/FTDialog.cxx
+++ b/vncviewer/FTDialog.cxx
@@ -102,8 +102,13 @@
 
   m_pProgress->initialize(0,0);
 
-  m_hwndLocalPath = GetDlgItem(m_hwndLocalPath, IDC_FTLOCALPATH);
-  m_hwndRemotePath = GetDlgItem(m_hwndRemotePath, IDC_FTREMOTEPATH);
+  m_hwndLocalPath = GetDlgItem(m_hwndFTDialog, IDC_FTLOCALPATH);
+  m_hwndRemotePath = GetDlgItem(m_hwndFTDialog, IDC_FTREMOTEPATH);
+
+  setIcon(IDC_FTLOCALUP, IDI_FTUP);
+  setIcon(IDC_FTREMOTEUP, IDI_FTUP);
+  setIcon(IDC_FTLOCALRELOAD, IDI_FTRELOAD);
+  setIcon(IDC_FTREMOTERELOAD, IDI_FTRELOAD);
 
   showLocalLVItems();
 
@@ -162,6 +167,12 @@
       case IDC_FTREMOTEUP:
         _this->onRemoteOneUpFolder();
         return FALSE;
+      case IDC_FTLOCALRELOAD:
+        _this->onLocalReload();
+        return FALSE;
+      case IDC_FTREMOTERELOAD:
+        _this->onRemoteReload();
+        return FALSE;
       }
     }
     break;
@@ -217,6 +228,19 @@
 {
 }
 
+void 
+FTDialog::onLocalReload()
+{
+  strcpy(m_szLocalPathTmp, m_szLocalPath);
+  showLocalLVItems();
+}
+
+void 
+FTDialog::onRemoteReload()
+{
+
+}
+
 void
 FTDialog::showLocalLVItems()
 {
@@ -239,9 +263,34 @@
 void 
 FTDialog::onLocalOneUpFolder()
 {
+  strcpy(m_szLocalPathTmp, m_szLocalPath);
+  makeOneUpFolder(m_szLocalPathTmp);
+  showLocalLVItems();
 }
 
 void 
 FTDialog::onRemoteOneUpFolder()
 {
 }
+
+int
+FTDialog::makeOneUpFolder(char *pPath)
+{
+  if (strcmp(pPath, "") == 0) return strlen(pPath);
+  for (int i=(strlen(pPath)-2); i>=0; i--) {
+    if (pPath[i] == '\\') {
+      pPath[i] = '\0';
+      break;
+    }
+    if (i == 0) pPath[0] = '\0';
+  }
+  return strlen(pPath);
+}
+
+void
+FTDialog::setIcon(int dest, int idIcon)
+{
+  HANDLE hIcon = LoadImage(m_hInstance, MAKEINTRESOURCE(idIcon), IMAGE_ICON, 16, 16, LR_SHARED);
+  SendMessage(GetDlgItem(m_hwndFTDialog, dest), BM_SETIMAGE, (WPARAM) IMAGE_ICON, (LPARAM) hIcon);
+  DestroyIcon((HICON) hIcon);
+}
diff --git a/vncviewer/FTDialog.h b/vncviewer/FTDialog.h
index c8bfc54..81c3ba7 100644
--- a/vncviewer/FTDialog.h
+++ b/vncviewer/FTDialog.h
@@ -63,10 +63,15 @@
       void onLocalItemActivate(LPNMITEMACTIVATE lpnmia);
       void onRemoteItemActivate(LPNMITEMACTIVATE lpnmia);
 
+      void onLocalReload();
+      void onRemoteReload();
+
+      void setIcon(int dest, int idIcon);
       bool initFTDialog();
       
       void onLocalOneUpFolder();
       void onRemoteOneUpFolder();
+      int makeOneUpFolder(char *pPath);
       
       bool m_bDlgShown;
 
diff --git a/vncviewer/resource.h b/vncviewer/resource.h
index fb23e8e..722b6dd 100644
--- a/vncviewer/resource.h
+++ b/vncviewer/resource.h
@@ -105,6 +105,7 @@
 #define IDC_FTDIRNAME                   1078
 #define IDC_CONFIRM_YESTOALL            1079
 #define IDC_CONFIRM_TEXT                1080
+#define IDC_EDIT2                       1082
 #define ID_TOOLBAR                      40002
 #define ID_CLOSE                        40003
 #define ID_OPTIONS                      40004
@@ -127,7 +128,7 @@
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_NEXT_RESOURCE_VALUE        129
 #define _APS_NEXT_COMMAND_VALUE         40017
-#define _APS_NEXT_CONTROL_VALUE         1081
+#define _APS_NEXT_CONTROL_VALUE         1083
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif
diff --git a/vncviewer/vncviewer.rc b/vncviewer/vncviewer.rc
index cf3c512..df6bf08 100644
--- a/vncviewer/vncviewer.rc
+++ b/vncviewer/vncviewer.rc
@@ -33,24 +33,31 @@
 CAPTION "TightVNC File Transfers"
 FONT 8, "MS Sans Serif"
 BEGIN
-    CTEXT           "Local Computer",IDC_FTLOCALLABEL,7,7,200,10
-    CTEXT           "TightVNC Server",IDC_FTREMOTELABEL,323,7,200,10
-    COMBOBOX        IDC_FTLOCALPATH,7,20,156,30,CBS_DROPDOWN | CBS_SORT | 
-                    WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_FTREMOTEPATH,323,20,156,30,CBS_DROPDOWN | CBS_SORT | 
-                    WS_VSCROLL | WS_TABSTOP
+    EDITTEXT        IDC_FTLOCALPATH,7,20,155,12,ES_AUTOHSCROLL
     CONTROL         "List1",IDC_FTLOCALLIST,"SysListView32",LVS_REPORT | 
                     LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | 
                     WS_TABSTOP,7,40,200,196
+    PUSHBUTTON      "...",IDC_FTLOCALBROWSE,165,20,14,12
+    PUSHBUTTON      "",IDC_FTLOCALUP,179,20,14,12,BS_ICON
+    PUSHBUTTON      "",IDC_FTLOCALRELOAD,193,20,14,12,BS_ICON
+    EDITTEXT        IDC_EDIT2,323,20,155,12,ES_AUTOHSCROLL
     CONTROL         "List2",IDC_FTREMOTELIST,"SysListView32",LVS_REPORT | 
                     LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | 
                     WS_TABSTOP,323,40,200,196
-    PUSHBUTTON      "",IDC_FTLOCALRELOAD,193,20,14,12,BS_ICON
-    PUSHBUTTON      "",IDC_FTLOCALUP,179,20,14,12,BS_ICON
-    PUSHBUTTON      "...",IDC_FTLOCALBROWSE,165,20,14,12
-    PUSHBUTTON      "",IDC_FTREMOTERELOAD,509,20,14,12,BS_ICON
-    PUSHBUTTON      "",IDC_FTREMOTEUP,495,20,14,12,BS_ICON
     PUSHBUTTON      "...",IDC_FTREMOTEBROWSE,481,20,14,12
+    PUSHBUTTON      "",IDC_FTREMOTEUP,495,20,14,12,BS_ICON
+    PUSHBUTTON      "",IDC_FTREMOTERELOAD,509,20,14,12,BS_ICON
+    PUSHBUTTON      "Upload Files and Folders",IDC_FTUPLOAD,218,66,94,12,
+                    WS_DISABLED
+    PUSHBUTTON      "Download Files and Folders",IDC_FTDOWNLOAD,218,85,94,12,
+                    WS_DISABLED
+    PUSHBUTTON      "Cancel File Transfer",IDC_FTCANCEL,218,167,94,12,
+                    WS_DISABLED
+    PUSHBUTTON      "Close File Transfers",IDC_FTCLOSE,218,217,94,12
+    COMBOBOX        IDC_FTSTATUS,7,262,516,30,CBS_DROPDOWNLIST | CBS_SORT | 
+                    WS_VSCROLL | WS_TABSTOP
+    CTEXT           "Local Computer",IDC_FTLOCALLABEL,7,7,200,10
+    CTEXT           "TightVNC Server",IDC_FTREMOTELABEL,323,7,200,10
     LTEXT           "File Transfer",IDC_STATIC,7,245,40,8
     LTEXT           "Current File",IDC_STATIC,323,245,36,8
     CONTROL         "Progress1",IDC_FTGENERALPROGRESS,"msctls_progress32",
@@ -59,15 +66,6 @@
                     WS_BORDER,370,244,128,10
     CTEXT           "0%",IDC_FTGENERALPERCENT,189,245,18,8
     CTEXT           "0%",IDC_FTSINGLEPERCENT,505,245,18,8
-    COMBOBOX        IDC_FTSTATUS,7,262,516,30,CBS_DROPDOWNLIST | CBS_SORT | 
-                    WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "Upload Files and Folders",IDC_FTUPLOAD,218,66,94,12,
-                    WS_DISABLED
-    PUSHBUTTON      "Cancel File Transfer",IDC_FTCANCEL,218,167,94,12,
-                    WS_DISABLED
-    PUSHBUTTON      "Download Files and Folders",IDC_FTDOWNLOAD,218,85,94,12,
-                    WS_DISABLED
-    PUSHBUTTON      "Close File Transfers",IDC_FTCLOSE,218,217,94,12
 END
 
 IDD_FTDIRNAME_DLG DIALOG DISCARDABLE  0, 0, 193, 63
