浏览代码

Commit 0de5a412466 caused "Operation was successfully completed" being shown even when synchronization is canceled in process

Source commit: c61033cde4e84baca039c6eb5de8e7b9382b272e
Martin Prikryl 7 年之前
父节点
当前提交
110efc5709
共有 2 个文件被更改,包括 16 次插入1 次删除
  1. 15 1
      source/forms/SynchronizeChecklist.cpp
  2. 1 0
      source/forms/SynchronizeChecklist.h

+ 15 - 1
source/forms/SynchronizeChecklist.cpp

@@ -104,6 +104,13 @@ bool __fastcall TSynchronizeChecklistDialog::Execute(TSynchronizeChecklist * Che
 
     CustomWinConfiguration->SynchronizeChecklist = FormConfiguration;
   }
+
+  if (FException.get() != NULL)
+  {
+    RethrowException(FException.get());
+  }
+
+  return Result;
 }
 //---------------------------------------------------------------------
 void __fastcall TSynchronizeChecklistDialog::UpdateControls()
@@ -1107,6 +1114,13 @@ void __fastcall TSynchronizeChecklistDialog::OkButtonClick(TObject * /*Sender*/)
 
   TAutoFlag Flag(FSynchronizing);
   UpdateControls();
-  FOnSynchronize(FToken, ProcessedItem);
+  try
+  {
+    FOnSynchronize(FToken, ProcessedItem);
+  }
+  catch (Exception & E)
+  {
+    FException.reset(CloneException(&E));
+  }
 }
 //---------------------------------------------------------------------------

+ 1 - 0
source/forms/SynchronizeChecklist.h

@@ -120,6 +120,7 @@ protected:
   typedef std::map<const void *, TListItem *> TTokens;
   TTokens FTokens;
   bool FSynchronizing;
+  std::unique_ptr<Exception> FException;
 
   void __fastcall UpdateControls();
   virtual void __fastcall CreateParams(TCreateParams & Params);