diff --git a/osu.Game/Overlays/DialogOverlay.cs b/osu.Game/Overlays/DialogOverlay.cs index 31dbd4390f..95f08e9e24 100644 --- a/osu.Game/Overlays/DialogOverlay.cs +++ b/osu.Game/Overlays/DialogOverlay.cs @@ -20,15 +20,14 @@ public void Push(PopupDialog dialog) { if (dialog == currentDialog) return; - State = Visibility.Visible; - - dialogContainer.Add(dialog); - - dialog.Show(); - dialog.StateChanged += onDialogOnStateChanged; - currentDialog?.Hide(); currentDialog = dialog; + + dialogContainer.Add(currentDialog); + + currentDialog.Show(); + currentDialog.StateChanged += onDialogOnStateChanged; + State = Visibility.Visible; } private void onDialogOnStateChanged(OverlayContainer dialog, Visibility v) @@ -38,6 +37,7 @@ private void onDialogOnStateChanged(OverlayContainer dialog, Visibility v) //handle the dialog being dismissed. dialog.Delay(PopupDialog.EXIT_DURATION); dialog.Expire(); + if (dialog == currentDialog) State = Visibility.Hidden; }