Always show exit confirmation when closing via alt-f4 or window control

This commit is contained in:
Dean Herbert 2019-09-20 02:22:49 +09:00
parent 433df52c7b
commit 636582e089
1 changed files with 15 additions and 4 deletions

View File

@ -69,11 +69,22 @@ public class MainMenu : OsuScreen
[BackgroundDependencyLoader(true)] [BackgroundDependencyLoader(true)]
private void load(DirectOverlay direct, SettingsOverlay settings, OsuConfigManager config) private void load(DirectOverlay direct, SettingsOverlay settings, OsuConfigManager config)
{ {
if (host.CanExit)
AddInternal(exitConfirmOverlay = new ExitConfirmOverlay { Action = this.Exit });
holdDelay = config.GetBindable<int>(OsuSetting.UIHoldActivationDelay); holdDelay = config.GetBindable<int>(OsuSetting.UIHoldActivationDelay);
if (host.CanExit)
{
AddInternal(exitConfirmOverlay = new ExitConfirmOverlay
{
Action = () =>
{
if (holdDelay.Value > 0)
confirmAndExit();
else
this.Exit();
}
});
}
AddRangeInternal(new Drawable[] AddRangeInternal(new Drawable[]
{ {
new ParallaxContainer new ParallaxContainer
@ -241,7 +252,7 @@ public override void OnResuming(IScreen last)
public override bool OnExiting(IScreen next) public override bool OnExiting(IScreen next)
{ {
if (holdDelay.Value == 0 && !exitConfirmed && dialogOverlay != null && !(dialogOverlay.CurrentDialog is ConfirmExitDialog)) if (!exitConfirmed && dialogOverlay != null && !(dialogOverlay.CurrentDialog is ConfirmExitDialog))
{ {
dialogOverlay.Push(new ConfirmExitDialog(confirmAndExit, () => exitConfirmOverlay.Abort())); dialogOverlay.Push(new ConfirmExitDialog(confirmAndExit, () => exitConfirmOverlay.Abort()));
return true; return true;