Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorVsevolod Kukol <sevoku@microsoft.com>2019-07-15 12:06:57 +0300
committermonojenkins <jo.shields+jenkins@xamarin.com>2019-07-15 18:26:37 +0300
commitf5778969723f80b4323de63278253bac35ef97ae (patch)
treee29554220fcb33c69b14d341a1bf8a4b71dfcb01 /main
parent654420ac4730ad4d2d7d5b15e81f1a9cfaa63d80 (diff)
[Ide] Fix error handling during project creation
Diffstat (limited to 'main')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs75
1 files changed, 38 insertions, 37 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs
index e8e2e52f5c..41d24f6c9f 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs
@@ -679,45 +679,46 @@ namespace MonoDevelop.Ide.Projects
}
dialog.CloseDialog ();
-
- if (ParentFolder != null)
- await IdeApp.ProjectOperations.SaveAsync (ParentFolder.ParentSolution);
- else
- await IdeApp.ProjectOperations.SaveAsync (processedTemplate.WorkspaceItems);
-
- CreateVersionControlItems ();
-
- if (OpenSolution) {
- DisposeExistingNewItems ();
- TemplateWizard wizard = wizardProvider.CurrentWizard;
- if (await OpenCreatedSolution (processedTemplate)) {
- var sol = IdeApp.Workspace.GetAllSolutions ().FirstOrDefault ();
- if (sol != null) {
- if (wizard != null)
- wizard.ItemsCreated (new [] { sol });
- InstallProjectTemplatePackages (sol);
- }
- }
- }
- else {
- // The item is not a solution being opened, so it is going to be added to
- // an existing item. In this case, it must not be disposed by the dialog.
- RunTemplateActions (processedTemplate);
- if (wizardProvider.HasWizard)
- wizardProvider.CurrentWizard.ItemsCreated (processedTemplate.WorkspaceItems);
- if (ParentFolder != null)
- InstallProjectTemplatePackages (ParentFolder.ParentSolution);
- }
-
- wizardProvider.Dispose ();
- IsNewItemCreated = true;
- UpdateDefaultSettings ();
- Gtk.Application.Invoke ((sender, args) => {
+ try {
+ if (ParentFolder != null)
+ await IdeApp.ProjectOperations.SaveAsync (ParentFolder.ParentSolution);
+ else
+ await IdeApp.ProjectOperations.SaveAsync (processedTemplate.WorkspaceItems);
+
+ CreateVersionControlItems ();
+
+ if (OpenSolution) {
+ DisposeExistingNewItems ();
+ TemplateWizard wizard = wizardProvider.CurrentWizard;
+ if (await OpenCreatedSolution (processedTemplate)) {
+ var sol = IdeApp.Workspace.GetAllSolutions ().FirstOrDefault ();
+ if (sol != null) {
+ if (wizard != null)
+ wizard.ItemsCreated (new [] { sol });
+ InstallProjectTemplatePackages (sol);
+ }
+ }
+ } else {
+ // The item is not a solution being opened, so it is going to be added to
+ // an existing item. In this case, it must not be disposed by the dialog.
+ RunTemplateActions (processedTemplate);
+ if (wizardProvider.HasWizard)
+ wizardProvider.CurrentWizard.ItemsCreated (processedTemplate.WorkspaceItems);
+ if (ParentFolder != null)
+ InstallProjectTemplatePackages (ParentFolder.ParentSolution);
+ }
+
+ wizardProvider.Dispose ();
+ IsNewItemCreated = true;
+ UpdateDefaultSettings ();
+
projectCreated.SetResult (true);
- ProjectCreated?.Invoke (this, EventArgs.Empty);
- });
- await projectCreated.Task;
+ await Runtime.RunInMainThread (() => ProjectCreated?.Invoke (this, EventArgs.Empty));
+ } catch (Exception ex) {
+ projectCreated.SetException (ex);
+ throw;
+ }
}
public Task<bool> ProjectCreation => projectCreated?.Task;