OSDN Git Service

Fix bugs of unexpected operation unlocking.
[ffftp/ffftp.git] / toolmenu.c
index ae530b4..7fcc205 100644 (file)
@@ -103,7 +103,9 @@ static int TmpRemoteDirSort;
 \r
 static int SyncMove = NO;\r
 \r
 \r
 static int SyncMove = NO;\r
 \r
-static int HideUI = NO;\r
+// デッドロック対策\r
+//static int HideUI = NO;\r
+static int HideUI = 0;\r
 \r
 \r
 /* 2007/09/21 sunasunamix  ここから *********************/\r
 \r
 \r
 /* 2007/09/21 sunasunamix  ここから *********************/\r
@@ -289,7 +291,7 @@ int MakeToolBarWindow(HWND hWnd, HINSTANCE hInst)
                /*===== ローカルのディレクトリ名ウインドウ =====*/\r
 \r
                SendMessage(hWndTbarLocal, TB_GETITEMRECT, 3, (LPARAM)&Rect1);\r
                /*===== ローカルのディレクトリ名ウインドウ =====*/\r
 \r
                SendMessage(hWndTbarLocal, TB_GETITEMRECT, 3, (LPARAM)&Rect1);\r
-#ifndef ENGLISH\r
+#ifndef FFFTP_ENGLISH\r
                DlgFont = CreateFont(Rect1.bottom-Rect1.top-8, 0, 0, 0, 0, FALSE,FALSE,FALSE,SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,MSGJPN254);\r
 #else\r
                DlgFont = CreateFont(Rect1.bottom-Rect1.top-8, 0, 0, 0, 0, FALSE,FALSE,FALSE,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,MSGJPN254);\r
                DlgFont = CreateFont(Rect1.bottom-Rect1.top-8, 0, 0, 0, 0, FALSE,FALSE,FALSE,SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,MSGJPN254);\r
 #else\r
                DlgFont = CreateFont(Rect1.bottom-Rect1.top-8, 0, 0, 0, 0, FALSE,FALSE,FALSE,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,MSGJPN254);\r
@@ -315,7 +317,7 @@ int MakeToolBarWindow(HWND hWnd, HINSTANCE hInst)
 \r
                        /* ドライブ名をセットしておく */\r
                        GetLogicalDriveStrings(FMAX_PATH, Tmp);\r
 \r
                        /* ドライブ名をセットしておく */\r
                        GetLogicalDriveStrings(FMAX_PATH, Tmp);\r
-                       NoDrives = LoadHideDriveListRegistory();\r
+                       NoDrives = LoadHideDriveListRegistry();\r
                        Pos = Tmp;\r
                        while(*Pos != NUL)\r
                        {\r
                        Pos = Tmp;\r
                        while(*Pos != NUL)\r
                        {\r
@@ -588,7 +590,9 @@ HWND GetRemoteTbarWnd(void)
 \r
 int GetHideUI(void)\r
 {\r
 \r
 int GetHideUI(void)\r
 {\r
-       return(HideUI);\r
+       // デッドロック対策\r
+//     return(HideUI);\r
+       return (HideUI > 0 ? YES : NO);\r
 }\r
 \r
 \r
 }\r
 \r
 \r
@@ -608,7 +612,9 @@ void MakeButtonsFocus(void)
        int Count;\r
        int Win;\r
 \r
        int Count;\r
        int Win;\r
 \r
-       if(HideUI == NO)\r
+       // デッドロック対策\r
+//     if(HideUI == NO)\r
+       if(HideUI == 0)\r
        {\r
                hWndMain = GetMainHwnd();\r
                hWndFocus = GetFocus();\r
        {\r
                hWndMain = GetMainHwnd();\r
                hWndFocus = GetFocus();\r
@@ -766,7 +772,9 @@ void DisableUserOpe(void)
 {\r
        int i;\r
 \r
 {\r
        int i;\r
 \r
-       HideUI = YES;\r
+       // デッドロック対策\r
+//     HideUI = YES;\r
+       HideUI++;\r
 \r
        for(i = 0; i < sizeof(HideMenus) / sizeof(int); i++)\r
        {\r
 \r
        for(i = 0; i < sizeof(HideMenus) / sizeof(int); i++)\r
        {\r
@@ -796,7 +804,11 @@ void EnableUserOpe(void)
 {\r
        int i;\r
 \r
 {\r
        int i;\r
 \r
-       if(HideUI == YES)\r
+       // デッドロック対策\r
+//     if(HideUI == YES)\r
+       if(HideUI > 0)\r
+               HideUI--;\r
+       if(HideUI == 0)\r
        {\r
                for(i = 0; i < sizeof(HideMenus) / sizeof(int); i++)\r
                {\r
        {\r
                for(i = 0; i < sizeof(HideMenus) / sizeof(int); i++)\r
                {\r
@@ -812,7 +824,8 @@ void EnableUserOpe(void)
                HideHostKanjiButton();\r
                HideLocalKanjiButton();\r
 \r
                HideHostKanjiButton();\r
                HideLocalKanjiButton();\r
 \r
-               HideUI = NO;\r
+               // バグ修正\r
+//             HideUI = NO;\r
 \r
                MakeButtonsFocus();\r
        }\r
 \r
                MakeButtonsFocus();\r
        }\r
@@ -832,7 +845,9 @@ void EnableUserOpe(void)
 \r
 int AskUserOpeDisabled(void)\r
 {\r
 \r
 int AskUserOpeDisabled(void)\r
 {\r
-       return(HideUI);\r
+       // デッドロック対策\r
+//     return(HideUI);\r
+       return (HideUI > 0 ? YES : NO);\r
 }\r
 \r
 \r
 }\r
 \r
 \r
@@ -1758,7 +1773,9 @@ void LocalRbuttonMenu(int Pos)
        UINT Flg3;\r
        int Count;\r
 \r
        UINT Flg3;\r
        int Count;\r
 \r
-       if(HideUI == NO)\r
+       // デッドロック対策\r
+//     if(HideUI == NO)\r
+       if(HideUI == 0)\r
        {\r
                Flg1 = 0;\r
                if(AskConnecting() == NO)\r
        {\r
                Flg1 = 0;\r
                if(AskConnecting() == NO)\r
@@ -1823,7 +1840,9 @@ void RemoteRbuttonMenu(int Pos)
        UINT Flg3;\r
        int Count;\r
 \r
        UINT Flg3;\r
        int Count;\r
 \r
-       if(HideUI == NO)\r
+       // デッドロック対策\r
+//     if(HideUI == NO)\r
+       if(HideUI == 0)\r
        {\r
                Flg1 = 0;\r
                if(AskConnecting() == NO)\r
        {\r
                Flg1 = 0;\r
                if(AskConnecting() == NO)\r
@@ -1846,9 +1865,18 @@ void RemoteRbuttonMenu(int Pos)
                AppendMenu(hMenu, MF_STRING | Flg1, MENU_DOWNLOAD_ALL, MSGJPN266);\r
                AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_DELETE, MSGJPN267);\r
                AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_RENAME, MSGJPN268);\r
                AppendMenu(hMenu, MF_STRING | Flg1, MENU_DOWNLOAD_ALL, MSGJPN266);\r
                AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_DELETE, MSGJPN267);\r
                AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_RENAME, MSGJPN268);\r
+#if defined(HAVE_TANDEM)\r
+               /* HP NonStop Server では CHMOD の仕様が異なるため使用不可 */\r
+               if (AskRealHostType() != HTYPE_TANDEM)\r
+#endif\r
                AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_CHMOD, MSGJPN269);\r
                AppendMenu(hMenu, MF_STRING | Flg1, MENU_MKDIR, MSGJPN270);\r
                AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_URL_COPY, MSGJPN271);\r
                AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_CHMOD, MSGJPN269);\r
                AppendMenu(hMenu, MF_STRING | Flg1, MENU_MKDIR, MSGJPN270);\r
                AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_URL_COPY, MSGJPN271);\r
+#if defined(HAVE_TANDEM)\r
+               /* OSS モードのときに表示されるように AskRealHostType() を使用する */\r
+               if (AskRealHostType() == HTYPE_TANDEM)\r
+                       AppendMenu(hMenu, MF_STRING | Flg1, MENU_SWITCH_OSS, MSGJPN2001);\r
+#endif\r
                AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);\r
                AppendMenu(hMenu, MF_STRING | Flg1, MENU_FILESIZE, MSGJPN272);\r
                AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);\r
                AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);\r
                AppendMenu(hMenu, MF_STRING | Flg1, MENU_FILESIZE, MSGJPN272);\r
                AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);\r
@@ -1887,7 +1915,9 @@ static void AddOpenMenu(HMENU hMenu, UINT Flg)
        char Tmp[FMAX_PATH+1];\r
        int i;\r
 \r
        char Tmp[FMAX_PATH+1];\r
        int i;\r
 \r
-       AppendMenu(hMenu, MF_STRING | Flg, MENU_DCLICK, MSGJPN274);\r
+       // ローカルフォルダを開く\r
+//     AppendMenu(hMenu, MF_STRING | Flg, MENU_DCLICK, MSGJPN274);\r
+       AppendMenu(hMenu, MF_STRING | Flg, MENU_OPEN, MSGJPN274);\r
        for(i = 0; i < VIEWERS; i++)\r
        {\r
                if(strlen(ViewerName[i]) != 0)\r
        for(i = 0; i < VIEWERS; i++)\r
        {\r
                if(strlen(ViewerName[i]) != 0)\r