Browse Source

Finding move candidates did not respect reverted actions

Source commit: 19ed00194496f610bbb9b231f8391a0195a6e230
Martin Prikryl 1 year ago
parent
commit
2f1aaab61d
1 changed files with 9 additions and 8 deletions
  1. 9 8
      source/forms/SynchronizeChecklist.cpp

+ 9 - 8
source/forms/SynchronizeChecklist.cpp

@@ -1534,11 +1534,12 @@ void __fastcall TSynchronizeChecklistDialog::FindMoveCandidateActionExecute(TObj
     while (!Found && (Item != NULL))
     while (!Found && (Item != NULL))
     {
     {
       const TSynchronizeChecklist::TItem * ChecklistItem = GetChecklistItem(Item);
       const TSynchronizeChecklist::TItem * ChecklistItem = GetChecklistItem(Item);
-      TSynchronizeChecklist::TAction OppositeAction = GetOppositeMoveAction(ChecklistItem->Action);
+      TSynchronizeChecklist::TAction Action = GetChecklistItemAction(ChecklistItem);
+      TSynchronizeChecklist::TAction OppositeAction = GetOppositeMoveAction(Action);
       if ((OppositeAction != TSynchronizeChecklist::saNone) &&
       if ((OppositeAction != TSynchronizeChecklist::saNone) &&
           // For focused item, we search pair even if the focused item is "delete" action,
           // For focused item, we search pair even if the focused item is "delete" action,
           // but when searching the next items, consider "transfer" actions only
           // but when searching the next items, consider "transfer" actions only
-          ((Item == ItemFocused) || IsTransferNewAction(ChecklistItem->Action)))
+          ((Item == ItemFocused) || IsTransferNewAction(Action)))
       {
       {
         TChecklistItems Candidates;
         TChecklistItems Candidates;
         if (ChecklistItem->IsDirectory)
         if (ChecklistItem->IsDirectory)
@@ -1551,7 +1552,7 @@ void __fastcall TSynchronizeChecklistDialog::FindMoveCandidateActionExecute(TObj
             for (size_t I = 0; I < NameCandidates.size(); I++)
             for (size_t I = 0; I < NameCandidates.size(); I++)
             {
             {
               const TSynchronizeChecklist::TItem * ChecklistItem2 = NameCandidates[I];
               const TSynchronizeChecklist::TItem * ChecklistItem2 = NameCandidates[I];
-              if ((ChecklistItem2->Action == OppositeAction) &&
+              if ((GetChecklistItemAction(ChecklistItem2) == OppositeAction) &&
                   DebugAlwaysTrue(ChecklistItem2->IsDirectory))
                   DebugAlwaysTrue(ChecklistItem2->IsDirectory))
               {
               {
                 Candidates.push_back(ChecklistItem2);
                 Candidates.push_back(ChecklistItem2);
@@ -1570,7 +1571,7 @@ void __fastcall TSynchronizeChecklistDialog::FindMoveCandidateActionExecute(TObj
             for (size_t I = 0; I < SizeCandidates.size(); I++)
             for (size_t I = 0; I < SizeCandidates.size(); I++)
             {
             {
               const TSynchronizeChecklist::TItem * ChecklistItem2 = SizeCandidates[I];
               const TSynchronizeChecklist::TItem * ChecklistItem2 = SizeCandidates[I];
-              if ((ChecklistItem2->Action == OppositeAction) &&
+              if ((GetChecklistItemAction(ChecklistItem2) == OppositeAction) &&
                   DebugAlwaysTrue(!ChecklistItem2->IsDirectory))
                   DebugAlwaysTrue(!ChecklistItem2->IsDirectory))
               {
               {
                 bool IsCandidate;
                 bool IsCandidate;
@@ -1580,13 +1581,13 @@ void __fastcall TSynchronizeChecklistDialog::FindMoveCandidateActionExecute(TObj
                   IsCandidate = true;
                   IsCandidate = true;
                 }
                 }
                 // or different filename but the same directory (in addition to the same size)
                 // or different filename but the same directory (in addition to the same size)
-                else if ((ChecklistItem->Action == TSynchronizeChecklist::saDeleteLocal) ||
-                         (ChecklistItem->Action == TSynchronizeChecklist::saDownloadNew))
+                else if ((Action == TSynchronizeChecklist::saDeleteLocal) ||
+                         (Action == TSynchronizeChecklist::saDownloadNew))
                 {
                 {
                   IsCandidate = SamePaths(ChecklistItem->Local.Directory, ChecklistItem2->Local.Directory);
                   IsCandidate = SamePaths(ChecklistItem->Local.Directory, ChecklistItem2->Local.Directory);
                 }
                 }
-                else if ((ChecklistItem->Action == TSynchronizeChecklist::saDeleteRemote) ||
-                         (ChecklistItem->Action == TSynchronizeChecklist::saUploadNew))
+                else if ((Action == TSynchronizeChecklist::saDeleteRemote) ||
+                         (Action == TSynchronizeChecklist::saUploadNew))
                 {
                 {
                   IsCandidate = UnixSamePath(ChecklistItem->Remote.Directory, ChecklistItem2->Remote.Directory);
                   IsCandidate = UnixSamePath(ChecklistItem->Remote.Directory, ChecklistItem2->Remote.Directory);
                 }
                 }