diff --git a/Source/ChocolateyGui.Common.Windows/Services/DialogService.cs b/Source/ChocolateyGui.Common.Windows/Services/DialogService.cs index 9d931c530..00468651f 100644 --- a/Source/ChocolateyGui.Common.Windows/Services/DialogService.cs +++ b/Source/ChocolateyGui.Common.Windows/Services/DialogService.cs @@ -33,6 +33,10 @@ public DialogService() _lock = new AsyncSemaphore(1); } + public event EventHandler ChildWindowOpened; + + public event EventHandler ChildWindowClosed; + public ShellView ShellView { get; set; } /// @@ -161,7 +165,10 @@ public async Task ShowChildWindowAsync( _childWindowLoadedHandler = (sender, e) => { + ChildWindowOpened?.Invoke(sender, e); + var cw = (ChildWindow)sender; + cw.ClosingFinished += (senderObj, r) => ChildWindowClosed?.Invoke(senderObj, r); if (cw.DataContext is IClosableChildWindow vm) { diff --git a/Source/ChocolateyGui.Common.Windows/Services/IDialogService.cs b/Source/ChocolateyGui.Common.Windows/Services/IDialogService.cs index 5b9fcd389..58b308312 100644 --- a/Source/ChocolateyGui.Common.Windows/Services/IDialogService.cs +++ b/Source/ChocolateyGui.Common.Windows/Services/IDialogService.cs @@ -5,6 +5,7 @@ // // -------------------------------------------------------------------------------------------------------------------- +using System; using System.Threading.Tasks; using ChocolateyGui.Common.Windows.Controls.Dialogs; using ChocolateyGui.Common.Windows.Views; @@ -14,6 +15,10 @@ namespace ChocolateyGui.Common.Windows.Services { public interface IDialogService { + event EventHandler ChildWindowOpened; + + event EventHandler ChildWindowClosed; + ShellView ShellView { get; set; } /// diff --git a/Source/ChocolateyGui.Common.Windows/ViewModels/AdvancedInstallViewModel.cs b/Source/ChocolateyGui.Common.Windows/ViewModels/AdvancedInstallViewModel.cs index d230114ba..e4157ad54 100644 --- a/Source/ChocolateyGui.Common.Windows/ViewModels/AdvancedInstallViewModel.cs +++ b/Source/ChocolateyGui.Common.Windows/ViewModels/AdvancedInstallViewModel.cs @@ -133,7 +133,7 @@ public bool IncludePreRelease } } - public Utilities.NotifyTaskCompletion> AvailableVersions + public Utilities.NotifyTaskCompletion> AvailableVersions { get { return _availableVersions; } set { SetPropertyValue(ref _availableVersions, value); } diff --git a/Source/ChocolateyGui.Common.Windows/Views/ShellView.xaml.cs b/Source/ChocolateyGui.Common.Windows/Views/ShellView.xaml.cs index 1a9a4d0f8..5bb53ac34 100644 --- a/Source/ChocolateyGui.Common.Windows/Views/ShellView.xaml.cs +++ b/Source/ChocolateyGui.Common.Windows/Views/ShellView.xaml.cs @@ -67,6 +67,9 @@ public ShellView( { Environment.CurrentDirectory = Bootstrapper.ApplicationFilesPath; } + + dialogService.ChildWindowOpened += (sender, o) => IsAnyDialogOpen = true; + dialogService.ChildWindowClosed += (sender, o) => IsAnyDialogOpen = false; } public void CheckOperatingSystemCompatibility()