diff --git a/modules/mono/editor/GodotTools/GodotTools/Build/BuildManager.cs b/modules/mono/editor/GodotTools/GodotTools/Build/BuildManager.cs index 9bb4fd153b28..907511d14046 100644 --- a/modules/mono/editor/GodotTools/GodotTools/Build/BuildManager.cs +++ b/modules/mono/editor/GodotTools/GodotTools/Build/BuildManager.cs @@ -206,17 +206,19 @@ private static bool BuildProjectBlocking(BuildInfo buildInfo) if (!File.Exists(buildInfo.Project)) return true; // No project to build. - using var pr = new EditorProgress("dotnet_build_project", "Building .NET project...", 1); - - pr.Step("Building project", 0); + bool success; + using (var pr = new EditorProgress("dotnet_build_project", "Building .NET project...", 1)) + { + pr.Step("Building project", 0); + success = Build(buildInfo); + } - if (!Build(buildInfo)) + if (!success) { ShowBuildErrorDialog("Failed to build project"); - return false; } - return true; + return success; } private static bool CleanProjectBlocking(BuildInfo buildInfo) @@ -224,32 +226,36 @@ private static bool CleanProjectBlocking(BuildInfo buildInfo) if (!File.Exists(buildInfo.Project)) return true; // No project to clean. - using var pr = new EditorProgress("dotnet_clean_project", "Cleaning .NET project...", 1); - - pr.Step("Cleaning project", 0); + bool success; + using (var pr = new EditorProgress("dotnet_clean_project", "Cleaning .NET project...", 1)) + { + pr.Step("Cleaning project", 0); + success = Build(buildInfo); + } - if (!Build(buildInfo)) + if (!success) { ShowBuildErrorDialog("Failed to clean project"); - return false; } - return true; + return success; } private static bool PublishProjectBlocking(BuildInfo buildInfo) { - using var pr = new EditorProgress("dotnet_publish_project", "Publishing .NET project...", 1); - - pr.Step("Running dotnet publish", 0); + bool success; + using (var pr = new EditorProgress("dotnet_publish_project", "Publishing .NET project...", 1)) + { + pr.Step("Running dotnet publish", 0); + success = Publish(buildInfo); + } - if (!Publish(buildInfo)) + if (!success) { ShowBuildErrorDialog("Failed to publish .NET project"); - return false; } - return true; + return success; } private static BuildInfo CreateBuildInfo( diff --git a/modules/mono/editor/GodotTools/GodotTools/GodotSharpEditor.cs b/modules/mono/editor/GodotTools/GodotTools/GodotSharpEditor.cs index 48e654c2866f..a00c812c7990 100644 --- a/modules/mono/editor/GodotTools/GodotTools/GodotSharpEditor.cs +++ b/modules/mono/editor/GodotTools/GodotTools/GodotSharpEditor.cs @@ -65,6 +65,7 @@ private bool CreateProjectSolutionIfNeeded() private bool CreateProjectSolution() { + string errorMessage = null; using (var pr = new EditorProgress("create_csharp_solution", "Generating solution...".TTR(), 2)) { pr.Step("Generating C# project...".TTR()); @@ -96,22 +97,23 @@ private bool CreateProjectSolution() } catch (IOException e) { - ShowErrorDialog("Failed to save solution. Exception message: ".TTR() + e.Message); - return false; + errorMessage = "Failed to save solution. Exception message: ".TTR() + e.Message; } - - pr.Step("Done".TTR()); - - // Here, after all calls to progress_task_step - CallDeferred(nameof(_ShowDotnetFeatures)); } else { - ShowErrorDialog("Failed to create C# project.".TTR()); + errorMessage = "Failed to create C# project.".TTR(); } + } - return true; + if (!string.IsNullOrEmpty(errorMessage)) + { + ShowErrorDialog(errorMessage); + return false; } + + _ShowDotnetFeatures(); + return true; } private void _ShowDotnetFeatures() @@ -161,14 +163,14 @@ public void ShowErrorDialog(string message, string title = "Error") { _errorDialog.Title = title; _errorDialog.DialogText = message; - _errorDialog.PopupCentered(); + EditorInterface.Singleton.PopupDialogCentered(_errorDialog); } public void ShowConfirmCreateSlnDialog() { _confirmCreateSlnDialog.Title = "C# solution already exists. This will override the existing C# project file, any manual changes will be lost.".TTR(); _confirmCreateSlnDialog.DialogText = "Create C# solution".TTR(); - _confirmCreateSlnDialog.PopupCentered(); + EditorInterface.Singleton.PopupDialogCentered(_confirmCreateSlnDialog); } private static string _vsCodePath = string.Empty; @@ -483,11 +485,11 @@ public override void _EnablePlugin() _editorSettings = EditorInterface.Singleton.GetEditorSettings(); _errorDialog = new AcceptDialog(); - editorBaseControl.AddChild(_errorDialog); + _errorDialog.SetUnparentWhenInvisible(true); _confirmCreateSlnDialog = new ConfirmationDialog(); + _confirmCreateSlnDialog.SetUnparentWhenInvisible(true); _confirmCreateSlnDialog.Confirmed += () => CreateProjectSolution(); - editorBaseControl.AddChild(_confirmCreateSlnDialog); MSBuildPanel = new MSBuildPanel(); MSBuildPanel.BuildStateChanged += BuildStateChanged;