mirror of
https://github.com/ppy/osu.git
synced 2025-03-06 03:42:55 +08:00
Merge pull request #14699 from peppy/fix-password-popover-back-button
Allow popovers to be closed via back button press
This commit is contained in:
commit
ebfd5cbe4f
@ -51,6 +51,24 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
AddAssert("room join password correct", () => lastJoinedPassword == null);
|
AddAssert("room join password correct", () => lastJoinedPassword == null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestPopoverHidesOnBackButton()
|
||||||
|
{
|
||||||
|
AddStep("add room", () => RoomManager.AddRooms(1, withPassword: true));
|
||||||
|
AddStep("select room", () => InputManager.Key(Key.Down));
|
||||||
|
AddStep("attempt join room", () => InputManager.Key(Key.Enter));
|
||||||
|
|
||||||
|
AddUntilStep("password prompt appeared", () => InputManager.ChildrenOfType<DrawableLoungeRoom.PasswordEntryPopover>().Any());
|
||||||
|
|
||||||
|
AddAssert("textbox has focus", () => InputManager.FocusedDrawable is OsuPasswordTextBox);
|
||||||
|
|
||||||
|
AddStep("hit escape", () => InputManager.Key(Key.Escape));
|
||||||
|
AddAssert("textbox lost focus", () => InputManager.FocusedDrawable is SearchTextBox);
|
||||||
|
|
||||||
|
AddStep("hit escape", () => InputManager.Key(Key.Escape));
|
||||||
|
AddUntilStep("password prompt hidden", () => !InputManager.ChildrenOfType<DrawableLoungeRoom.PasswordEntryPopover>().Any());
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TestPopoverHidesOnLeavingScreen()
|
public void TestPopoverHidesOnLeavingScreen()
|
||||||
{
|
{
|
||||||
|
@ -4,14 +4,17 @@
|
|||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Effects;
|
using osu.Framework.Graphics.Effects;
|
||||||
using osu.Framework.Graphics.UserInterface;
|
using osu.Framework.Graphics.UserInterface;
|
||||||
|
using osu.Framework.Input.Bindings;
|
||||||
|
using osu.Game.Input.Bindings;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osuTK;
|
using osuTK;
|
||||||
|
|
||||||
namespace osu.Game.Graphics.UserInterfaceV2
|
namespace osu.Game.Graphics.UserInterfaceV2
|
||||||
{
|
{
|
||||||
public class OsuPopover : Popover
|
public class OsuPopover : Popover, IKeyBindingHandler<GlobalAction>
|
||||||
{
|
{
|
||||||
private const float fade_duration = 250;
|
private const float fade_duration = 250;
|
||||||
private const double scale_duration = 500;
|
private const double scale_duration = 500;
|
||||||
@ -51,5 +54,23 @@ namespace osu.Game.Graphics.UserInterfaceV2
|
|||||||
this.ScaleTo(0.7f, scale_duration, Easing.OutQuint);
|
this.ScaleTo(0.7f, scale_duration, Easing.OutQuint);
|
||||||
this.FadeOut(fade_duration, Easing.OutQuint);
|
this.FadeOut(fade_duration, Easing.OutQuint);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool OnPressed(GlobalAction action)
|
||||||
|
{
|
||||||
|
if (State.Value == Visibility.Hidden)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (action == GlobalAction.Back)
|
||||||
|
{
|
||||||
|
Hide();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnReleased(GlobalAction action)
|
||||||
|
{
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user