diff options
author | Jose Medrano <josmed@microsoft.com> | 2019-07-12 15:06:32 +0300 |
---|---|---|
committer | monojenkins <jo.shields+jenkins@xamarin.com> | 2019-07-15 18:26:37 +0300 |
commit | 654420ac4730ad4d2d7d5b15e81f1a9cfaa63d80 (patch) | |
tree | 6fba783ea354ed5093381c10a181ace55a83100f /main | |
parent | e7cb5ab98845ed937de94df83e2818cb4671aa13 (diff) |
[GetToCode] Adds TaskCompletionSource to Create method in NewProjectController Fixes VSTS #942253 - After going through New Project dialog, Get to Code is shown and active, leading to broken state
Diffstat (limited to 'main')
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs | 32 | ||||
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs | 7 |
2 files changed, 25 insertions, 14 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 7ccb045856..e8e2e52f5c 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs @@ -181,9 +181,9 @@ namespace MonoDevelop.Ide.Projects imageProvider.Dispose ();
- return IsNewItemCreated;
- }
-
+ return ProjectCreation != null && !(ProjectCreation.IsCompleted && !ProjectCreation.Result); + } + void GetVersionControlHandler ()
{
versionControlHandler = AddinManager.GetExtensionObjects ("/MonoDevelop/Ide/VersionControlProjectTemplateHandler", typeof(IVersionControlProjectTemplateHandler), true)
@@ -613,10 +613,13 @@ namespace MonoDevelop.Ide.Projects public async Task Create ()
{
+ projectCreated = new TaskCompletionSource<bool> (); + if (wizardProvider.HasWizard)
wizardProvider.BeforeProjectIsCreated ();
- if (!await CreateProject ()) {
+ if (!await CreateProject ()) { + projectCreated.SetResult (false); ProjectCreationFailed?.Invoke (this, EventArgs.Empty);
return;
}
@@ -667,15 +670,16 @@ namespace MonoDevelop.Ide.Projects string solutionFileName = Path.Combine (projectConfiguration.SolutionLocation, finalConfigurationPage.SolutionFileName);
if (File.Exists (solutionFileName)) {
if (!MessageService.Confirm (GettextCatalog.GetString ("File {0} already exists. Overwrite?", solutionFileName), AlertButton.OverwriteFile)) {
- ParentFolder = null;//Reset process of creating solution
+ ParentFolder = null;//Reset process of creating solution + projectCreated.SetResult (false); return;
}
File.Delete (solutionFileName);
}
}
- dialog.CloseDialog ();
-
+ dialog.CloseDialog (); + if (ParentFolder != null)
await IdeApp.ProjectOperations.SaveAsync (ParentFolder.ParentSolution);
else
@@ -708,14 +712,16 @@ namespace MonoDevelop.Ide.Projects wizardProvider.Dispose ();
IsNewItemCreated = true;
UpdateDefaultSettings ();
-
- var tcs = new TaskCompletionSource<bool> (); + Gtk.Application.Invoke ((sender, args) => { + projectCreated.SetResult (true); ProjectCreated?.Invoke (this, EventArgs.Empty); - tcs.SetResult (true); });
- await tcs.Task;
- }
+ await projectCreated.Task; + } + + public Task<bool> ProjectCreation => projectCreated?.Task; + TaskCompletionSource<bool> projectCreated; public WizardPage CurrentWizardPage {
get {
@@ -937,7 +943,7 @@ namespace MonoDevelop.Ide.Projects public Image GetImage (SolutionTemplate template)
{
return imageProvider.GetImage (template);
- }
+ } }
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs index 8f2ac13ba8..d1880c52c4 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs @@ -713,7 +713,12 @@ namespace MonoDevelop.Ide newProjectDialog.OpenSolution = true; newProjectDialog.SelectedTemplateId = defaultTemplate; newProjectDialog.ShowTemplateSelection = showTemplateSelection; - return newProjectDialog.Show (); + var show = newProjectDialog.Show (); + if (show) { + WelcomePage.WelcomePageService.HideWelcomePageOrWindow (); + return await newProjectDialog.ProjectCreation; + } + return false; } public Task<WorkspaceItem> AddNewWorkspaceItem (Workspace parentWorkspace) |