瀏覽代碼

Bug 1410: Option to preserve directory timestamps is not enabled for synchronization

https://winscp.net/tracker/1410

Source commit: 44ccb939ffd3154cef5522869fef03ff9ef25430
Martin Prikryl 9 年之前
父節點
當前提交
a75af65a64
共有 2 個文件被更改,包括 17 次插入6 次删除
  1. 14 5
      source/core/CopyParam.cpp
  2. 3 1
      source/forms/CopyParams.cpp

+ 14 - 5
source/core/CopyParam.cpp

@@ -250,13 +250,12 @@ void __fastcall TCopyParamType::DoGetInfoStr(
     }
   }
 
-  bool AddPreserveTime = (PreserveTime != Defaults.PreserveTime);
   bool APreserveTimeDirs = PreserveTime && PreserveTimeDirs;
-  if (AddPreserveTime || (APreserveTimeDirs != Defaults.PreserveTimeDirs))
+  if ((PreserveTime != Defaults.PreserveTime) || (APreserveTimeDirs != Defaults.PreserveTimeDirs))
   {
+    bool AddPreserveTime = false;
     UnicodeString Str = LoadStr(PreserveTime ? COPY_INFO_TIMESTAMP : COPY_INFO_DONT_PRESERVE_TIME);
 
-    const int Except = cpaIncludeMaskOnly | cpaNoPreserveTime;
     const int ExceptDirs = cpaNoPreserveTimeDirs;
     if (APreserveTimeDirs != Defaults.PreserveTimeDirs)
     {
@@ -268,12 +267,22 @@ void __fastcall TCopyParamType::DoGetInfoStr(
           AddPreserveTime = true;
         }
       }
-      ADD("", Except | ExceptDirs);
+      ADD("", ExceptDirs);
+    }
+
+    const int Except = cpaIncludeMaskOnly | cpaNoPreserveTime;
+    if (PreserveTime != Defaults.PreserveTime)
+    {
+      if (FLAGCLEAR(Options, Except))
+      {
+        AddPreserveTime = true;
+      }
+      ADD(L"", Except);
     }
 
     if (AddPreserveTime)
     {
-      ADD(Str, Except);
+      AddToList(Result, Str, Separator);
     }
 
     if (FLAGCLEAR(Options, Except))

+ 3 - 1
source/forms/CopyParams.cpp

@@ -199,8 +199,10 @@ void __fastcall TCopyParamsFrame::UpdateControls()
     Enabled);
   EnableControl(PreserveTimeCheck, FLAGCLEAR(CopyParamAttrs, cpaNoPreserveTime) &&
     FLAGCLEAR(CopyParamAttrs, cpaIncludeMaskOnly) && Enabled);
+  // The checkbox can be enabled even then "preserve time" checkbox is not (such as on the Synchronize dialog);
   EnableControl(PreserveTimeDirsCheck,
-    PreserveTimeCheck->Enabled && FLAGCLEAR(CopyParamAttrs, cpaNoPreserveTimeDirs) &&
+    FLAGCLEAR(CopyParamAttrs, cpaNoPreserveTimeDirs) &&
+    FLAGCLEAR(CopyParamAttrs, cpaIncludeMaskOnly) && Enabled &&
     PreserveTimeCheck->Checked);
   EnableControl(ChangeCaseGroup, FLAGCLEAR(CopyParamAttrs, cpaIncludeMaskOnly) && Enabled);
   EnableControl(IgnorePermErrorsCheck,