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:
authorJose Medrano <josmed@microsoft.com>2019-07-12 15:06:32 +0300
committermonojenkins <jo.shields+jenkins@xamarin.com>2019-07-15 18:26:37 +0300
commit654420ac4730ad4d2d7d5b15e81f1a9cfaa63d80 (patch)
tree6fba783ea354ed5093381c10a181ace55a83100f /main
parente7cb5ab98845ed937de94df83e2818cb4671aa13 (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.cs32
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs7
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)