@@ -252,10 +252,11 @@ UPDATEITEM_TYPE UpdateDiffAfterOperation(const FileActionItem & act, CDiffContex
252252 // UI dependent.
253253 switch (act.UIResult )
254254 {
255- case FileActionItem::UI_SYNC:
255+ case FileActionItem::UI_COPY:
256+ case FileActionItem::UI_COPY_DIFFITEMS:
256257 bUpdateSrc = true ;
257258 bUpdateDest = true ;
258- CopyDiffSideAndProperties (ctxt, di, act.UIOrigin , act.UIDestination );
259+ CopyDiffSideAndProperties (ctxt, di, act.UIOrigin , act.UIDestination , act. UIResult );
259260 if (ctxt.GetCompareDirs () > 2 )
260261 SetDiffCompare (di, DIFFCODE::NOCMP);
261262 else
@@ -266,7 +267,7 @@ UPDATEITEM_TYPE UpdateDiffAfterOperation(const FileActionItem & act, CDiffContex
266267 case FileActionItem::UI_MOVE:
267268 bUpdateSrc = true ;
268269 bUpdateDest = true ;
269- CopyDiffSideAndProperties (ctxt, di, act.UIOrigin , act.UIDestination );
270+ CopyDiffSideAndProperties (ctxt, di, act.UIOrigin , act.UIDestination , act. UIResult );
270271 UnsetDiffSide (ctxt, di, act.UIOrigin );
271272 SetDiffCompare (di, DIFFCODE::NOCMP);
272273 break ;
@@ -1083,9 +1084,10 @@ int GetColImage(const DIFFITEM &di)
10831084 * @note This does not update UI - ReloadItemStatus() does
10841085 * @sa CDirDoc::ReloadItemStatus()
10851086 */
1086- void CopyDiffSideAndProperties (CDiffContext& ctxt, DIFFITEM& di, int src, int dst)
1087+ void CopyDiffSideAndProperties (CDiffContext& ctxt, DIFFITEM& di, int src, int dst, int action )
10871088{
1088- if (di.diffcode .exists (src))
1089+ if (di.diffcode .exists (src) &&
1090+ action != FileActionItem::UI_COPY_DIFFITEMS || di.diffcode .isResultDiff ())
10891091 {
10901092 di.diffcode .diffcode |= (DIFFCODE::FIRST << dst);
10911093 // copy file properties other than ctime
@@ -1099,10 +1101,7 @@ void CopyDiffSideAndProperties(CDiffContext& ctxt, DIFFITEM& di, int src, int ds
10991101 if (di.HasChildren ())
11001102 {
11011103 for (DIFFITEM* pdic = di.GetFirstChild (); pdic; pdic = pdic->GetFwdSiblingLink ())
1102- {
1103- CopyDiffSideAndProperties (ctxt, *pdic, src, dst);
1104- UpdateStatusFromDisk (ctxt, di, dst);
1105- }
1104+ CopyDiffSideAndProperties (ctxt, *pdic, src, dst, action);
11061105 }
11071106}
11081107
0 commit comments