popup window v3

This commit is contained in:
Matt Parker
2025-09-30 19:04:03 +10:00
parent aee8ae4cf6
commit 4256db8df4
2 changed files with 11 additions and 15 deletions

View File

@@ -2,6 +2,7 @@ using Godot;
namespace SharpIDE.Godot.Features.SlnPicker; namespace SharpIDE.Godot.Features.SlnPicker;
// This is a bit of a mess intertwined with the optional popup window
public partial class SlnPicker : Control public partial class SlnPicker : Control
{ {
private FileDialog _fileDialog = null!; private FileDialog _fileDialog = null!;
@@ -17,16 +18,10 @@ public partial class SlnPicker : Control
var windowParent = GetParentOrNull<Window>(); var windowParent = GetParentOrNull<Window>();
_fileDialog.FileSelected += path => _fileDialog.FileSelected += path =>
{ {
_tcs.SetResult(path);
windowParent?.Hide(); windowParent?.Hide();
_tcs.SetResult(path);
}; };
_fileDialog.Canceled += () => _tcs.SetResult(null); windowParent?.CloseRequested += () => _tcs.SetResult(null);
windowParent?.CloseRequested += OnCloseRequested;
}
private void OnCloseRequested()
{
_tcs.SetResult(null);
} }
public async Task<string?> GetSelectedSolutionPath() public async Task<string?> GetSelectedSolutionPath()

View File

@@ -36,14 +36,15 @@ public partial class IdeWindow : Control
} }
else else
{ {
var window = GetNode<Window>("Window"); var popupWindow = GetNode<Window>("Window");
window.Title = "Open Solution"; var windowSize = GetWindow().GetSize();
window.AddChild(_slnPicker); popupWindow.Size = windowSize with { X = windowSize.X / 2, Y = windowSize.Y / 2 };
window.Popup(); popupWindow.Title = "Open Solution";
window.CloseRequested += () => popupWindow.AddChild(_slnPicker);
popupWindow.Popup();
popupWindow.CloseRequested += () =>
{ {
window.Hide(); popupWindow.Hide();
//window.QueueFreeChildren();
}; };
} }
_ = Task.GodotRun(async () => _ = Task.GodotRun(async () =>