• R/O
  • HTTP
  • SSH
  • HTTPS

提交

标签
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

FFFTPのソースコードです。


Commit MetaInfo

修订版8333fcc168e5101d863dc2625e466de04090a0d8 (tree)
时间2017-09-17 22:42:07
作者s_kawamoto <s_kawamoto@user...>
Commiters_kawamoto

Log Message

Fix bugs of the drag-and-drop routine.

更改概述

差异

Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
Binary files a/FFFTP_Eng_Release_64/FFFTP.exe and b/FFFTP_Eng_Release_64/FFFTP.exe differ
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
Binary files a/Release_64/FFFTP.exe and b/Release_64/FFFTP.exe differ
--- a/Resource/FFFTP.rc
+++ b/Resource/FFFTP.rc
@@ -242,7 +242,7 @@ FONT 9, "MS Shell Dlg", 0, 0, 0x0
242242 BEGIN
243243 DEFPUSHBUTTON "OK",IDOK,133,294,50,14
244244 ICON ffftp,-1,7,4,20,20
245- CTEXT "FFFTP Ver 1.99a-20170618",-1,113,11,90,8
245+ CTEXT "FFFTP Ver 1.99a-20170917",-1,113,11,90,8
246246 CTEXT "FFFTP‚Ífreeware‚Å‚·",-1,7,279,305,8
247247 CTEXT "Copyright(C) 1997-2010 Sota & ‚²‹¦—Í‚¢‚½‚¾‚¢‚½•ûX\nCopyright (C) 2011-2017 FFFTP Project (Hiromichi Matsushima, Suguru Kawamoto, IWAMOTO Kouichi, vitamin0x, ‚¤‚ȁ[, Asami, fortran90, tomo1192, Yuji Tanaka, Moriguchi Hirokazu, ‚Ó‚¤‚¹‚ñ)",-1,7,25,305,44,SS_NOPREFIX
248248 CTEXT "",ABOUT_JRE,7,96,305,8
@@ -2213,8 +2213,8 @@ nodrop_csr CURSOR "nodrop_c.cur"
22132213 //
22142214
22152215 VS_VERSION_INFO VERSIONINFO
2216- FILEVERSION 1,99,1,14
2217- PRODUCTVERSION 1,99,1,14
2216+ FILEVERSION 1,99,1,15
2217+ PRODUCTVERSION 1,99,1,15
22182218 FILEFLAGSMASK 0x3fL
22192219 #ifdef _DEBUG
22202220 FILEFLAGS 0x1L
@@ -2232,12 +2232,12 @@ BEGIN
22322232 VALUE "Comments", "‚±‚ê‚̓tƒŠ[ƒ\ƒtƒgƒEƒGƒA‚Å‚·B"
22332233 VALUE "CompanyName", "Sota, FFFTP Project"
22342234 VALUE "FileDescription", "FFFTP"
2235- VALUE "FileVersion", "1, 99, 1, 14"
2235+ VALUE "FileVersion", "1, 99, 1, 15"
22362236 VALUE "InternalName", "FFFTP"
22372237 VALUE "LegalCopyright", "Copyright (C) 1997-2010 Sota & ‚²‹¦—Í‚¢‚½‚¾‚¢‚½•ûX\nCopyright (C) 2011-2017 FFFTP Project (Hiromichi Matsushima, Suguru Kawamoto, IWAMOTO Kouichi, vitamin0x, ‚¤‚ȁ[, Asami, fortran90, tomo1192, Yuji Tanaka, Moriguchi Hirokazu, ‚Ó‚¤‚¹‚ñ)."
22382238 VALUE "OriginalFilename", "FFFTP.exe"
22392239 VALUE "ProductName", "FFFTP"
2240- VALUE "ProductVersion", "1, 99, 1, 14"
2240+ VALUE "ProductVersion", "1, 99, 1, 15"
22412241 END
22422242 END
22432243 BLOCK "VarFileInfo"
--- a/Resource_eng/ffftp.rc
+++ b/Resource_eng/ffftp.rc
@@ -242,7 +242,7 @@ FONT 9, "MS Shell Dlg", 0, 0, 0x0
242242 BEGIN
243243 DEFPUSHBUTTON "OK",IDOK,132,296,50,14
244244 ICON ffftp,-1,7,4,20,20
245- CTEXT "FFFTP Ver 1.99a-20170618",-1,110,11,90,8
245+ CTEXT "FFFTP Ver 1.99a-20170917",-1,110,11,90,8
246246 CTEXT "FFFTP is freeware",-1,7,281,301,8
247247 CTEXT "Copyright(C) 1997-2010 Sota && cooperators\nCopyright (C) 2011-2017 FFFTP Project (Hiromichi Matsushima, Suguru Kawamoto, IWAMOTO Kouichi, vitamin0x, unarist, Asami, fortran90, tomo1192, Yuji Tanaka, Moriguchi Hirokazu, Fu-sen)",-1,7,25,301,44
248248 CTEXT "",ABOUT_JRE,7,93,301,8
@@ -2253,8 +2253,8 @@ nodrop_csr CURSOR "nodrop_c.cur"
22532253 //
22542254
22552255 VS_VERSION_INFO VERSIONINFO
2256- FILEVERSION 1,99,1,14
2257- PRODUCTVERSION 1,99,1,14
2256+ FILEVERSION 1,99,1,15
2257+ PRODUCTVERSION 1,99,1,15
22582258 FILEFLAGSMASK 0x3fL
22592259 #ifdef _DEBUG
22602260 FILEFLAGS 0x1L
@@ -2272,12 +2272,12 @@ BEGIN
22722272 VALUE "Comments", "This software is Free Software"
22732273 VALUE "CompanyName", "Sota, FFFTP Project"
22742274 VALUE "FileDescription", "FFFTP"
2275- VALUE "FileVersion", "1, 99, 1, 14"
2275+ VALUE "FileVersion", "1, 99, 1, 15"
22762276 VALUE "InternalName", "FFFTP"
22772277 VALUE "LegalCopyright", "Copyright (C) 1997-2010 Sota & cooperators\nCopyright (C) 2011-2017 FFFTP Project (Hiromichi Matsushima, Suguru Kawamoto, IWAMOTO Kouichi, vitamin0x, unarist, Asami, fortran90, tomo1192, Yuji Tanaka, Moriguchi Hirokazu, Fu-sen)."
22782278 VALUE "OriginalFilename", "FFFTP.exe"
22792279 VALUE "ProductName", "FFFTP"
2280- VALUE "ProductVersion", "1, 99, 1, 14"
2280+ VALUE "ProductVersion", "1, 99, 1, 15"
22812281 END
22822282 END
22832283 BLOCK "VarFileInfo"
--- a/common.h
+++ b/common.h
@@ -72,16 +72,16 @@
7272 //#define PROGRAM_VERSION_NUM 1972 /* バージョン */
7373 // 64ビット対応
7474 #ifdef _WIN64
75-#define VER_STR "1.99a-20170618 64bit"
75+#define VER_STR "1.99a-20170917 64bit"
7676 #else
77-#define VER_STR "1.99a-20170618"
77+#define VER_STR "1.99a-20170917"
7878 #endif
7979 #define VER_NUM 1990 /* 設定バージョン */
8080 #define PROGRAM_VERSION_NUM 1990 /* バージョン */
8181 // ソフトウェア自動更新
8282 // リリースバージョンはリリース予定年(10進数4桁)+月(2桁)+日(2桁)+通し番号(0スタート2桁)とする
8383 // 2014年7月31日中の30個目のリリースは2014073129
84-#define RELEASE_VERSION_NUM 2017061800 /* リリースバージョン */
84+#define RELEASE_VERSION_NUM 2017091700 /* リリースバージョン */
8585
8686
8787 // SourceForge.JPによるフォーク
--- a/filelist.c
+++ b/filelist.c
@@ -179,7 +179,7 @@ static int IgnoreExist = NO;
179179
180180 static int Dragging = NO;
181181 // 特定の操作を行うと異常終了するバグ修正
182-static int DragFirstTime = NO;
182+static POINT DropPoint;
183183
184184 static int StratusMode; /* 0=ファイル, 1=ディレクトリ, 2=リンク */
185185
@@ -498,6 +498,20 @@ static void doTransferRemoteFile(void)
498498 if (remoteFileListBase != NULL)
499499 return;
500500
501+ // 特定の操作を行うと異常終了するバグ修正
502+ while(1)
503+ {
504+ MSG msg;
505+ if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
506+ {
507+ TranslateMessage(&msg);
508+ DispatchMessage(&msg);
509+ }
510+ else if(AskTransferNow() == NO)
511+ break;
512+ Sleep(10);
513+ }
514+
501515 FileListBase = NULL;
502516 MakeSelectedFileList(WIN_REMOTE, YES, NO, &FileListBase, &CancelFlg);
503517 FileListBaseNoExpand = NULL;
@@ -546,7 +560,8 @@ static void doTransferRemoteFile(void)
546560
547561 // 特定の操作を行うと異常終了するバグ修正
548562 // for (i = 0 ; i < 10 ; i++) {
549- for (i = 0 ; i < 1000 ; i++) {
563+ while(1)
564+ {
550565 MSG msg;
551566
552567 if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
@@ -771,9 +786,13 @@ static void doDragDrop(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
771786 }
772787
773788 // ドロップ先のアプリに WM_LBUTTONUP を飛ばす。
774- GetCursorPos(&pt);
789+ // 特定の操作を行うと異常終了するバグ修正
790+// GetCursorPos(&pt);
791+ pt = DropPoint;
775792 ScreenToClient(hWnd, &pt);
776793 PostMessage(hWnd,WM_LBUTTONUP,0,MAKELPARAM(pt.x,pt.y));
794+ // ドロップ先が他プロセスかつカーソルが自プロセスのドロップ可能なウィンドウ上にある場合の対策
795+ EnableWindow(GetMainHwnd(), TRUE);
777796 }
778797
779798
@@ -804,6 +823,8 @@ static LRESULT FileListCommonWndProc(HWND hWnd, UINT message, WPARAM wParam, LPA
804823 HWND hWndDst;
805824 WNDPROC ProcPtr;
806825 HWND hWndHistEdit;
826+ // 特定の操作を行うと異常終了するバグ修正
827+ static int DragFirstTime = NO;
807828
808829 Win = WIN_LOCAL;
809830 hWndDst = hWndListRemote;
@@ -869,6 +890,13 @@ static LRESULT FileListCommonWndProc(HWND hWnd, UINT message, WPARAM wParam, LPA
869890 break;
870891
871892 case WM_LBUTTONDOWN :
893+ // 特定の操作を行うと異常終了するバグ修正
894+ if(AskUserOpeDisabled() == YES)
895+ break;
896+ if(Dragging == YES)
897+ break;
898+ DragFirstTime = NO;
899+ GetCursorPos(&DropPoint);
872900 EraseListViewTips();
873901 SetFocus(hWnd);
874902 DragPoint.x = LOWORD(lParam);
@@ -878,6 +906,9 @@ static LRESULT FileListCommonWndProc(HWND hWnd, UINT message, WPARAM wParam, LPA
878906 break;
879907
880908 case WM_LBUTTONUP :
909+ // 特定の操作を行うと異常終了するバグ修正
910+ if(AskUserOpeDisabled() == YES)
911+ break;
881912 if(Dragging == YES)
882913 {
883914 Dragging = NO;
@@ -885,9 +916,6 @@ static LRESULT FileListCommonWndProc(HWND hWnd, UINT message, WPARAM wParam, LPA
885916 hCsrDrg = LoadCursor(NULL, IDC_ARROW);
886917 SetCursor(hCsrDrg);
887918
888- // 同時接続対応
889- if(AskUserOpeDisabled() == YES)
890- break;
891919 Point.x = (long)(short)LOWORD(lParam);
892920 Point.y = (long)(short)HIWORD(lParam);
893921 ClientToScreen(hWnd, &Point);
@@ -913,148 +941,157 @@ static LRESULT FileListCommonWndProc(HWND hWnd, UINT message, WPARAM wParam, LPA
913941 }
914942 return(CallWindowProc(ProcPtr, hWnd, message, wParam, lParam));
915943
916- case WM_DRAGDROP:
944+ case WM_DRAGDROP:
945+ // OLE D&Dを開始する (yutaka)
917946 // 特定の操作を行うと異常終了するバグ修正
947+// doDragDrop(hWnd, message, wParam, lParam);
948+ if(DragFirstTime == NO)
949+ doDragDrop(hWnd, message, wParam, lParam);
918950 DragFirstTime = YES;
919- // OLE D&Dを開始する (yutaka)
920- doDragDrop(hWnd, message, wParam, lParam);
921- return (TRUE);
922- break;
923-
924- case WM_GETDATA: // ファイルのパスをD&D先のアプリへ返す (yutaka)
925- switch(wParam)
926- {
927- case CF_HDROP: /* ファイル */
928- {
929- OSVERSIONINFO os_info;
930- BOOL NTFlag = FALSE;
931- char **FileNameList;
932- int filelen;
933- int i, j, filenum = 0;
934-
935- FILELIST *FileListBase, *FileListBaseNoExpand, *pf;
951+ return (TRUE);
952+ break;
953+
954+ case WM_GETDATA: // ファイルのパスをD&D先のアプリへ返す (yutaka)
955+ switch(wParam)
956+ {
957+ case CF_HDROP: /* ファイル */
958+ {
959+ OSVERSIONINFO os_info;
960+ BOOL NTFlag = FALSE;
961+ char **FileNameList;
962+ int filelen;
963+ int i, j, filenum = 0;
964+
965+ FILELIST *FileListBase, *FileListBaseNoExpand, *pf;
936966 // 特定の操作を行うと異常終了するバグ修正
937-// int CancelFlg = NO;
938- char LocDir[FMAX_PATH+1];
939- char *PathDir;
967+// int CancelFlg = NO;
968+ char LocDir[FMAX_PATH+1];
969+ char *PathDir;
940970
941971 // 特定の操作を行うと異常終了するバグ修正
942- if(DragFirstTime == YES)
943- {
944- GetCursorPos(&Point);
945- hWndPnt = WindowFromPoint(Point);
946- hWndParent = GetParent(hWndPnt);
947- }
948- DragFirstTime = NO;
972+ GetCursorPos(&DropPoint);
973+ hWndPnt = WindowFromPoint(DropPoint);
974+ hWndParent = GetParent(hWndPnt);
949975 DisableUserOpe();
950976 CancelFlg = NO;
951977
952978 // 変数が未初期化のバグ修正
953979 FileListBaseNoExpand = NULL;
954- // ローカル側で選ばれているファイルをFileListBaseに登録
955- if (hWndDragStart == hWndListLocal) {
956- AskLocalCurDir(LocDir, FMAX_PATH);
957- PathDir = LocDir;
958-
959- FileListBase = NULL;
980+ // ローカル側で選ばれているファイルをFileListBaseに登録
981+ if (hWndDragStart == hWndListLocal) {
982+ AskLocalCurDir(LocDir, FMAX_PATH);
983+ PathDir = LocDir;
984+
985+ FileListBase = NULL;
960986 // ローカル側からアプリケーションにD&Dできないバグ修正
961-// MakeSelectedFileList(WIN_LOCAL, YES, NO, &FileListBase, &CancelFlg);
962- MakeSelectedFileList(WIN_LOCAL, NO, NO, &FileListBase, &CancelFlg);
987+// MakeSelectedFileList(WIN_LOCAL, YES, NO, &FileListBase, &CancelFlg);
988+ if(hWndPnt != hWndListRemote && hWndPnt != hWndListLocal && hWndParent != hWndListRemote && hWndParent != hWndListLocal)
989+ MakeSelectedFileList(WIN_LOCAL, NO, NO, &FileListBase, &CancelFlg);
963990 FileListBaseNoExpand = FileListBase;
964-
965- } else if (hWndDragStart == hWndListRemote) {
991+
992+ } else if (hWndDragStart == hWndListRemote) {
966993 // 特定の操作を行うと異常終了するバグ修正
967-// GetCursorPos(&Point);
968-// hWndPnt = WindowFromPoint(Point);
994+// GetCursorPos(&Point);
995+// hWndPnt = WindowFromPoint(Point);
969996 // hWndParent = GetParent(hWndPnt);
970- if (hWndPnt == hWndListRemote || hWndPnt == hWndListLocal ||
997+ if (hWndPnt == hWndListRemote || hWndPnt == hWndListLocal ||
971998 hWndParent == hWndListRemote || hWndParent == hWndListLocal) {
972- FileListBase = NULL;
973-
974- } else {
975- // 選択されているリモートファイルのリストアップ
976- // このタイミングでリモートからローカルの一時フォルダへダウンロードする
977- // (2007.8.31 yutaka)
978- doTransferRemoteFile();
979- PathDir = remoteFileDir;
980- FileListBase = remoteFileListBase;
981- FileListBaseNoExpand = remoteFileListBaseNoExpand;
982- }
983-
984- }
985-
999+ FileListBase = NULL;
1000+
1001+ } else {
1002+ // 選択されているリモートファイルのリストアップ
1003+ // このタイミングでリモートからローカルの一時フォルダへダウンロードする
1004+ // (2007.8.31 yutaka)
1005+ doTransferRemoteFile();
1006+ PathDir = remoteFileDir;
1007+ FileListBase = remoteFileListBase;
1008+ FileListBaseNoExpand = remoteFileListBaseNoExpand;
1009+ }
1010+
1011+ }
1012+
9861013 #if defined(HAVE_TANDEM)
9871014 if(FileListBaseNoExpand == NULL)
9881015 pf = FileListBase;
9891016 else
9901017 #endif
991- pf = FileListBaseNoExpand;
1018+ pf = FileListBaseNoExpand;
9921019 // 特定の操作を行うと異常終了するバグ修正
9931020 if(pf != NULL)
1021+ {
9941022 Dragging = NO;
1023+ ReleaseCapture();
1024+ hCsrDrg = LoadCursor(NULL, IDC_ARROW);
1025+ SetCursor(hCsrDrg);
1026+ // ドロップ先が他プロセスかつカーソルが自プロセスのドロップ可能なウィンドウ上にある場合の対策
1027+ EnableWindow(GetMainHwnd(), FALSE);
1028+ }
9951029 EnableUserOpe();
996- for (filenum = 0; pf ; filenum++) {
997- pf = pf->Next;
998- }
999- // ファイルが未選択の場合は何もしない。(yutaka)
1000- if (filenum <= 0) {
1001- *((HANDLE *)lParam) = NULL;
1002- return (FALSE);
1003- }
1004-
1005- /* ファイル名の配列を作成する */
1006- FileNameList = (char **)GlobalAlloc(GPTR,sizeof(char *) * filenum);
1007- if(FileNameList == NULL){
1008- abort();
1009- }
1010- pf = FileListBaseNoExpand;
1011- for (j = 0; pf ; j++) {
1012- filelen = strlen(PathDir) + 1 + strlen(pf->File) + 1;
1013- FileNameList[j] = (char *)GlobalAlloc(GPTR, filelen);
1014- strncpy_s(FileNameList[j], filelen, PathDir, _TRUNCATE);
1015- strncat_s(FileNameList[j], filelen, "\\", _TRUNCATE);
1016- strncat_s(FileNameList[j], filelen, pf->File, _TRUNCATE);
1017- pf = pf->Next;
1030+ // ドロップ先が他プロセスかつカーソルが自プロセスのドロップ可能なウィンドウ上にある場合の対策
1031+ if(pf != NULL)
1032+ EnableWindow(GetMainHwnd(), FALSE);
1033+ for (filenum = 0; pf ; filenum++) {
1034+ pf = pf->Next;
1035+ }
1036+ // ファイルが未選択の場合は何もしない。(yutaka)
1037+ if (filenum <= 0) {
1038+ *((HANDLE *)lParam) = NULL;
1039+ return (FALSE);
1040+ }
1041+
1042+ /* ファイル名の配列を作成する */
1043+ FileNameList = (char **)GlobalAlloc(GPTR,sizeof(char *) * filenum);
1044+ if(FileNameList == NULL){
1045+ abort();
1046+ }
1047+ pf = FileListBaseNoExpand;
1048+ for (j = 0; pf ; j++) {
1049+ filelen = strlen(PathDir) + 1 + strlen(pf->File) + 1;
1050+ FileNameList[j] = (char *)GlobalAlloc(GPTR, filelen);
1051+ strncpy_s(FileNameList[j], filelen, PathDir, _TRUNCATE);
1052+ strncat_s(FileNameList[j], filelen, "\\", _TRUNCATE);
1053+ strncat_s(FileNameList[j], filelen, pf->File, _TRUNCATE);
1054+ pf = pf->Next;
10181055 #if 0
10191056 if (FileListBase->Node == NODE_DIR) {
1020- // フォルダを掴んだ場合はそれ以降展開しない
1021- filenum = 1;
1022- break;
1023- }
1057+ // フォルダを掴んだ場合はそれ以降展開しない
1058+ filenum = 1;
1059+ break;
1060+ }
10241061 #endif
1025- }
1026-
1027- os_info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
1028- GetVersionEx(&os_info);
1029- if(os_info.dwPlatformId == VER_PLATFORM_WIN32_NT){
1030- NTFlag = TRUE;
1031- }
1032-
1033- /* ドロップファイルリストの作成 */
1034- /* NTの場合はUNICODEになるようにする */
1035- *((HANDLE *)lParam) = CreateDropFileMem(FileNameList, filenum, NTFlag);
1036-
1037- /* ファイル名の配列を解放する */
1038- for (i = 0; i < filenum ; i++) {
1039- GlobalFree(FileNameList[i]);
1040- }
1041- GlobalFree(FileNameList);
1042-
1043- if (hWndDragStart == hWndListLocal) {
1044- DeleteFileList(&FileListBase);
1045- } else {
1046- // あとでファイル削除してフリーする
1047- }
1048-
1049- return (TRUE);
1050- }
1051- break;
1052-
1053- default:
1054- *((HANDLE *)lParam) = NULL;
1055- break;
1056- }
1057-
1062+ }
1063+
1064+ os_info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
1065+ GetVersionEx(&os_info);
1066+ if(os_info.dwPlatformId == VER_PLATFORM_WIN32_NT){
1067+ NTFlag = TRUE;
1068+ }
1069+
1070+ /* ドロップファイルリストの作成 */
1071+ /* NTの場合はUNICODEになるようにする */
1072+ *((HANDLE *)lParam) = CreateDropFileMem(FileNameList, filenum, NTFlag);
1073+
1074+ /* ファイル名の配列を解放する */
1075+ for (i = 0; i < filenum ; i++) {
1076+ GlobalFree(FileNameList[i]);
1077+ }
1078+ GlobalFree(FileNameList);
1079+
1080+ if (hWndDragStart == hWndListLocal) {
1081+ DeleteFileList(&FileListBase);
1082+ } else {
1083+ // あとでファイル削除してフリーする
1084+ }
1085+
1086+ return (TRUE);
1087+ }
1088+ break;
1089+
1090+ default:
1091+ *((HANDLE *)lParam) = NULL;
1092+ break;
1093+ }
1094+
10581095 break;
10591096
10601097 case WM_DRAGOVER:
@@ -1099,6 +1136,9 @@ static LRESULT FileListCommonWndProc(HWND hWnd, UINT message, WPARAM wParam, LPA
10991136 break;
11001137
11011138 case WM_RBUTTONDOWN :
1139+ // 特定の操作を行うと異常終了するバグ修正
1140+ if(AskUserOpeDisabled() == YES)
1141+ break;
11021142 /* ここでファイルを選ぶ */
11031143 CallWindowProc(ProcPtr, hWnd, message, wParam, lParam);
11041144
@@ -1111,10 +1151,16 @@ static LRESULT FileListCommonWndProc(HWND hWnd, UINT message, WPARAM wParam, LPA
11111151 break;
11121152
11131153 case WM_LBUTTONDBLCLK :
1154+ // 特定の操作を行うと異常終了するバグ修正
1155+ if(AskUserOpeDisabled() == YES)
1156+ break;
11141157 DoubleClickProc(Win, NO, -1);
11151158 break;
11161159
11171160 case WM_MOUSEMOVE :
1161+ // 特定の操作を行うと異常終了するバグ修正
1162+ if(AskUserOpeDisabled() == YES)
1163+ break;
11181164 if(wParam == MK_LBUTTON)
11191165 {
11201166 if((Dragging == NO) &&
@@ -1160,6 +1206,9 @@ static LRESULT FileListCommonWndProc(HWND hWnd, UINT message, WPARAM wParam, LPA
11601206 break;
11611207
11621208 case WM_MOUSEWHEEL :
1209+ // デッドロック対策
1210+ if(AskUserOpeDisabled() == YES)
1211+ break;
11631212 if(Dragging == NO)
11641213 {
11651214 short zDelta = (short)HIWORD(wParam);
@@ -6208,7 +6257,7 @@ static int AskFilterStr(char *Fname, int Type)
62086257
62096258 void SetFilter(int *CancelCheckWork)
62106259 {
6211- if(DialogBox(GetFtpInst(), MAKEINTRESOURCE(filter_dlg), GetMainHwnd(), FilterWndProc) == YES)
6260+ if(DialogBox(GetFtpInst(), MAKEINTRESOURCE(filter_dlg), GetMainHwnd(), FilterWndProc) == YES)
62126261 {
62136262 DispWindowTitle();
62146263 GetLocalDirForWnd();
--- a/getput.c
+++ b/getput.c
@@ -811,11 +811,11 @@ static ULONG WINAPI TransferThread(void *Dummy)
811811 {
812812 // 同時ログイン数制限に引っかかった可能性あり
813813 // 負荷を下げるために約10秒間待機
814- i = 10000;
814+ i = 1000;
815815 while(NewCmdSkt != CmdSkt && i > 0)
816816 {
817817 BackgrndMessageProc();
818- Sleep(1);
818+ Sleep(10);
819819 i--;
820820 }
821821 }
@@ -1185,6 +1185,13 @@ static ULONG WINAPI TransferThread(void *Dummy)
11851185 // ReleaseMutex(hListAccMutex);
11861186 // GoExit = YES;
11871187 // }
1188+ // バグ対策
1189+ else if(strcmp(Pos->Cmd, "NULL") == 0)
1190+ {
1191+ Sleep(0);
1192+ Sleep(100);
1193+ ReleaseMutex(hListAccMutex);
1194+ }
11881195 else
11891196 ReleaseMutex(hListAccMutex);
11901197
--- a/main.c
+++ b/main.c
@@ -3426,7 +3426,7 @@ int BackgrndMessageProc(void)
34263426 // if(!IsMainThread() || !HtmlHelp(NULL, NULL, HH_PRETRANSLATEMESSAGE, (DWORD)&Msg))
34273427 if(!IsMainThread() || !HtmlHelp(NULL, NULL, HH_PRETRANSLATEMESSAGE, (DWORD_PTR)&Msg))
34283428 {
3429- /* ディレクトリ名の表示コンボボックスでBSやRETが効くように */
3429+ /* ディレクトリ名の表示コンボボックスでBSやRETが効くように */
34303430 /* コンボボックス内ではアクセラレータを無効にする */
34313431 if((Msg.hwnd == GetLocalHistEditHwnd()) ||
34323432 (Msg.hwnd == GetRemoteHistEditHwnd()) ||
--- a/toolmenu.c
+++ b/toolmenu.c
@@ -879,10 +879,6 @@ void DisableUserOpe(void)
879879 EnableWindow(hWndDirLocal, FALSE);
880880 EnableWindow(hWndDirRemote, FALSE);
881881
882- // 特定の操作を行うと異常終了するバグ修正
883- EnableWindow(GetLocalHwnd(), FALSE);
884- EnableWindow(GetRemoteHwnd(), FALSE);
885-
886882 return;
887883 }
888884
@@ -916,10 +912,6 @@ void EnableUserOpe(void)
916912 EnableWindow(hWndDirLocal, TRUE);
917913 EnableWindow(hWndDirRemote, TRUE);
918914
919- // 特定の操作を行うと異常終了するバグ修正
920- EnableWindow(GetLocalHwnd(), TRUE);
921- EnableWindow(GetRemoteHwnd(), TRUE);
922-
923915 // 選択不可な漢字コードのボタンが表示されるバグを修正
924916 HideHostKanjiButton();
925917 HideLocalKanjiButton();