OSDN Git Service

Fix bugs of drag-and-drop handling.
authors_kawamoto <s_kawamoto@users.sourceforge.jp>
Tue, 14 Jun 2016 12:45:08 +0000 (21:45 +0900)
committers_kawamoto <s_kawamoto@users.sourceforge.jp>
Tue, 14 Jun 2016 12:45:08 +0000 (21:45 +0900)
Change behavior of workaround for deadlock.

FFFTP_Eng_Release/FFFTP.exe
FFFTP_Eng_Release_64/FFFTP.exe
Release/FFFTP.exe
Release_64/FFFTP.exe
Resource/FFFTP.rc
Resource_eng/ffftp.rc
common.h
filelist.c
toolmenu.c

index f270bdf..7bcb93d 100644 (file)
Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
index 9d70494..19a8a5a 100644 (file)
Binary files a/FFFTP_Eng_Release_64/FFFTP.exe and b/FFFTP_Eng_Release_64/FFFTP.exe differ
index 70bdc1f..ef609f0 100644 (file)
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
index 4003ae1..1c5402e 100644 (file)
Binary files a/Release_64/FFFTP.exe and b/Release_64/FFFTP.exe differ
index 4e03207..0b794a8 100644 (file)
@@ -242,7 +242,7 @@ FONT 9, "MS Shell Dlg", 0, 0, 0x0
 BEGIN\r
     DEFPUSHBUTTON   "OK",IDOK,133,294,50,14\r
     ICON            ffftp,-1,7,4,20,20\r
-    CTEXT           "FFFTP Ver 1.99a",-1,113,11,90,8\r
+    CTEXT           "FFFTP Ver 1.99a-20160614",-1,113,11,90,8\r
     CTEXT           "FFFTP\82Ífreeware\82Å\82·",-1,7,279,305,8\r
     CTEXT           "Copyright(C) 1997-2010 Sota & \82²\8b¦\97Í\82¢\82½\82¾\82¢\82½\95û\81X\nCopyright (C) 2011-2016 FFFTP Project (Hiromichi Matsushima, Suguru Kawamoto, IWAMOTO Kouichi, vitamin0x, \82¤\82È\81[, Asami, fortran90, tomo1192, Yuji Tanaka, Moriguchi Hirokazu, \82Ó\82¤\82¹\82ñ)",-1,7,25,305,44,SS_NOPREFIX\r
     CTEXT           "",ABOUT_JRE,7,96,305,8\r
@@ -2213,8 +2213,8 @@ nodrop_csr              CURSOR                  "nodrop_c.cur"
 //\r
 \r
 VS_VERSION_INFO VERSIONINFO\r
- FILEVERSION 1,99,1,0\r
- PRODUCTVERSION 1,99,1,0\r
+ FILEVERSION 1,99,1,1\r
+ PRODUCTVERSION 1,99,1,1\r
  FILEFLAGSMASK 0x3fL\r
 #ifdef _DEBUG\r
  FILEFLAGS 0x1L\r
@@ -2232,12 +2232,12 @@ BEGIN
             VALUE "Comments", "\82±\82ê\82Í\83t\83\8a\81[\83\\83t\83g\83E\83G\83A\82Å\82·\81B"\r
             VALUE "CompanyName", "Sota, FFFTP Project"\r
             VALUE "FileDescription", "FFFTP"\r
-            VALUE "FileVersion", "1, 99, 1, 0"\r
+            VALUE "FileVersion", "1, 99, 1, 1"\r
             VALUE "InternalName", "FFFTP"\r
             VALUE "LegalCopyright", "Copyright (C) 1997-2010 Sota & \82²\8b¦\97Í\82¢\82½\82¾\82¢\82½\95û\81X\nCopyright (C) 2011-2016 FFFTP Project (Hiromichi Matsushima, Suguru Kawamoto, IWAMOTO Kouichi, vitamin0x, \82¤\82È\81[, Asami, fortran90, tomo1192, Yuji Tanaka, Moriguchi Hirokazu, \82Ó\82¤\82¹\82ñ)."\r
             VALUE "OriginalFilename", "FFFTP.exe"\r
             VALUE "ProductName", "FFFTP"\r
-            VALUE "ProductVersion", "1, 99, 1, 0"\r
+            VALUE "ProductVersion", "1, 99, 1, 1"\r
         END\r
     END\r
     BLOCK "VarFileInfo"\r
index 310539f..a14862e 100644 (file)
@@ -242,7 +242,7 @@ FONT 9, "MS Shell Dlg", 0, 0, 0x0
 BEGIN\r
     DEFPUSHBUTTON   "OK",IDOK,132,296,50,14\r
     ICON            ffftp,-1,7,4,20,20\r
-    CTEXT           "FFFTP Ver 1.99a",-1,110,11,90,8\r
+    CTEXT           "FFFTP Ver 1.99a-20160614",-1,110,11,90,8\r
     CTEXT           "FFFTP is freeware",-1,7,281,301,8\r
     CTEXT           "Copyright(C) 1997-2010 Sota && cooperators\nCopyright (C) 2011-2016 FFFTP Project (Hiromichi Matsushima, Suguru Kawamoto, IWAMOTO Kouichi, vitamin0x, unarist, Asami, fortran90, tomo1192, Yuji Tanaka, Moriguchi Hirokazu, Fu-sen)",-1,7,25,301,44\r
     CTEXT           "",ABOUT_JRE,7,93,301,8\r
@@ -2253,8 +2253,8 @@ nodrop_csr              CURSOR                  "nodrop_c.cur"
 //\r
 \r
 VS_VERSION_INFO VERSIONINFO\r
- FILEVERSION 1,99,1,0\r
- PRODUCTVERSION 1,99,1,0\r
+ FILEVERSION 1,99,1,1\r
+ PRODUCTVERSION 1,99,1,1\r
  FILEFLAGSMASK 0x3fL\r
 #ifdef _DEBUG\r
  FILEFLAGS 0x1L\r
@@ -2272,12 +2272,12 @@ BEGIN
             VALUE "Comments", "This software is Free Software"\r
             VALUE "CompanyName", "Sota, FFFTP Project"\r
             VALUE "FileDescription", "FFFTP"\r
-            VALUE "FileVersion", "1, 99, 1, 0"\r
+            VALUE "FileVersion", "1, 99, 1, 1"\r
             VALUE "InternalName", "FFFTP"\r
             VALUE "LegalCopyright", "Copyright (C) 1997-2010 Sota & cooperators\nCopyright (C) 2011-2016 FFFTP Project (Hiromichi Matsushima, Suguru Kawamoto, IWAMOTO Kouichi, vitamin0x, unarist, Asami, fortran90, tomo1192, Yuji Tanaka, Moriguchi Hirokazu, Fu-sen)."\r
             VALUE "OriginalFilename", "FFFTP.exe"\r
             VALUE "ProductName", "FFFTP"\r
-            VALUE "ProductVersion", "1, 99, 1, 0"\r
+            VALUE "ProductVersion", "1, 99, 1, 1"\r
         END\r
     END\r
     BLOCK "VarFileInfo"\r
index 355bacb..8066199 100644 (file)
--- a/common.h
+++ b/common.h
 //#define PROGRAM_VERSION_NUM          1972            /* バージョン */\r
 // 64ビット対応\r
 #ifdef _WIN64\r
-#define VER_STR                                        "1.99a 64bit"\r
+#define VER_STR                                        "1.99a-20160614 64bit"\r
 #else\r
-#define VER_STR                                        "1.99a"\r
+#define VER_STR                                        "1.99a-20160614"\r
 #endif\r
 #define VER_NUM                                        1990            /* 設定バージョン */\r
 #define PROGRAM_VERSION_NUM            1990            /* バージョン */\r
 // ソフトウェア自動更新\r
 // リリースバージョンはリリース予定年(10進数4桁)+月(2桁)+日(2桁)+通し番号(0スタート2桁)とする\r
 // 2014年7月31日中の30個目のリリースは2014073129\r
-#define RELEASE_VERSION_NUM            2016051400      /* リリースバージョン */\r
+#define RELEASE_VERSION_NUM            2016061400      /* リリースバージョン */\r
 \r
 \r
 // SourceForge.JPによるフォーク\r
index a55fdc2..cdecf45 100755 (executable)
@@ -178,6 +178,8 @@ static int IgnoreOld = NO;
 static int IgnoreExist = NO;\r
 \r
 static int Dragging = NO;\r
+// 特定の操作を行うと異常終了するバグ修正\r
+static int DragFirstTime = NO;\r
 \r
 static int StratusMode;                        /* 0=ファイル, 1=ディレクトリ, 2=リンク */\r
 \r
@@ -542,7 +544,9 @@ static void doTransferRemoteFile(void)
        // FFFTPにダウンロード要求を出し、ダウンロードの完了を待つ。\r
        PostMessage(GetMainHwnd(), WM_COMMAND, MAKEWPARAM(MENU_DOWNLOAD, 0), 0);\r
 \r
-       for (i = 0 ; i < 10 ; i++) {\r
+       // 特定の操作を行うと異常終了するバグ修正\r
+//     for (i = 0 ; i < 10 ; i++) {\r
+       for (i = 0 ; i < 1000 ; i++) {\r
                MSG msg;\r
 \r
                if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {\r
@@ -561,7 +565,20 @@ static void doTransferRemoteFile(void)
        // OLE D&D中にメインウィンドウをユーザに操作させると、おかしくなるので、\r
        // 隠しモーダルダイアログを作る。\r
        // (2007.9.11 yutaka)\r
-       DialogBox(GetFtpInst(), MAKEINTRESOURCE(IDD_OLEDRAG), GetMainHwnd(), (DLGPROC)doOleDlgProc);\r
+       // 特定の操作を行うと異常終了するバグ修正\r
+//     DialogBox(GetFtpInst(), MAKEINTRESOURCE(IDD_OLEDRAG), GetMainHwnd(), (DLGPROC)doOleDlgProc);\r
+       while(1)\r
+       {\r
+               MSG msg;\r
+               if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))\r
+               {\r
+                       TranslateMessage(&msg);\r
+                       DispatchMessage(&msg);\r
+               }\r
+               else if(AskTransferNow() == NO)\r
+                       break;\r
+               Sleep(10);\r
+       }\r
 \r
        // ダウンロード先を元に戻す\r
        SetLocalDirHist(LocDir);\r
@@ -897,6 +914,8 @@ static LRESULT FileListCommonWndProc(HWND hWnd, UINT message, WPARAM wParam, LPA
                        return(CallWindowProc(ProcPtr, hWnd, message, wParam, lParam));\r
 \r
                case WM_DRAGDROP:  \r
+                       // 特定の操作を行うと異常終了するバグ修正\r
+                       DragFirstTime = YES;\r
                        // OLE D&Dを開始する (yutaka)\r
                        doDragDrop(hWnd, message, wParam, lParam);\r
                        return (TRUE);\r
@@ -920,9 +939,13 @@ static LRESULT FileListCommonWndProc(HWND hWnd, UINT message, WPARAM wParam, LPA
                                        char *PathDir;\r
 \r
                                        // 特定の操作を行うと異常終了するバグ修正\r
-                                       GetCursorPos(&Point);\r
-                                       hWndPnt = WindowFromPoint(Point);\r
-                                       hWndParent = GetParent(hWndPnt);\r
+                                       if(DragFirstTime == YES)\r
+                                       {\r
+                                               GetCursorPos(&Point);\r
+                                               hWndPnt = WindowFromPoint(Point);\r
+                                               hWndParent = GetParent(hWndPnt);\r
+                                       }\r
+                                       DragFirstTime = NO;\r
                                        DisableUserOpe();\r
                                        CancelFlg = NO;\r
 \r
index dcc408b..a455234 100644 (file)
@@ -927,6 +927,9 @@ void EnableUserOpe(void)
                // バグ修正\r
 //             HideUI = NO;\r
 \r
+               // バグ修正\r
+               SetFocus(GetMainHwnd());\r
+\r
                MakeButtonsFocus();\r
        }\r
        return;\r