mirror of
https://github.com/ppy/osu.git
synced 2025-03-28 09:37:23 +08:00
Merge pull request #18119 from bdach/mod-overlay/broken-hover
Fix mod panels not hovering correctly after closing customisation area via mouse on new mod select
This commit is contained in:
commit
98eab9668d
@ -18,6 +18,7 @@ using osu.Game.Rulesets;
|
|||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
using osu.Game.Rulesets.Osu;
|
using osu.Game.Rulesets.Osu;
|
||||||
using osu.Game.Rulesets.Osu.Mods;
|
using osu.Game.Rulesets.Osu.Mods;
|
||||||
|
using osuTK;
|
||||||
using osuTK.Input;
|
using osuTK.Input;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.UserInterface
|
namespace osu.Game.Tests.Visual.UserInterface
|
||||||
@ -164,7 +165,7 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
AddStep("select mod requiring configuration", () => SelectedMods.Value = new[] { new OsuModDifficultyAdjust() });
|
AddStep("select mod requiring configuration", () => SelectedMods.Value = new[] { new OsuModDifficultyAdjust() });
|
||||||
assertCustomisationToggleState(disabled: false, active: true);
|
assertCustomisationToggleState(disabled: false, active: true);
|
||||||
|
|
||||||
AddStep("dismiss mod customisation via mouse", () =>
|
AddStep("dismiss mod customisation via toggle", () =>
|
||||||
{
|
{
|
||||||
InputManager.MoveMouseTo(modSelectScreen.ChildrenOfType<ShearedToggleButton>().Single());
|
InputManager.MoveMouseTo(modSelectScreen.ChildrenOfType<ShearedToggleButton>().Single());
|
||||||
InputManager.Click(MouseButton.Left);
|
InputManager.Click(MouseButton.Left);
|
||||||
@ -191,6 +192,29 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
assertCustomisationToggleState(disabled: true, active: false); // config was dismissed without explicit user action.
|
assertCustomisationToggleState(disabled: true, active: false); // config was dismissed without explicit user action.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestDismissCustomisationViaDimmedArea()
|
||||||
|
{
|
||||||
|
createScreen();
|
||||||
|
assertCustomisationToggleState(disabled: true, active: false);
|
||||||
|
|
||||||
|
AddStep("select mod requiring configuration", () => SelectedMods.Value = new[] { new OsuModDifficultyAdjust() });
|
||||||
|
assertCustomisationToggleState(disabled: false, active: true);
|
||||||
|
|
||||||
|
AddStep("move mouse to settings area", () => InputManager.MoveMouseTo(this.ChildrenOfType<ModSettingsArea>().Single()));
|
||||||
|
AddStep("move mouse to dimmed area", () =>
|
||||||
|
{
|
||||||
|
InputManager.MoveMouseTo(new Vector2(
|
||||||
|
modSelectScreen.ScreenSpaceDrawQuad.TopLeft.X,
|
||||||
|
(modSelectScreen.ScreenSpaceDrawQuad.TopLeft.Y + modSelectScreen.ScreenSpaceDrawQuad.BottomLeft.Y) / 2));
|
||||||
|
});
|
||||||
|
AddStep("click", () => InputManager.Click(MouseButton.Left));
|
||||||
|
assertCustomisationToggleState(disabled: false, active: false);
|
||||||
|
|
||||||
|
AddStep("move mouse to first mod panel", () => InputManager.MoveMouseTo(modSelectScreen.ChildrenOfType<ModPanel>().First()));
|
||||||
|
AddAssert("first mod panel is hovered", () => modSelectScreen.ChildrenOfType<ModPanel>().First().IsHovered);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ensure that two mod overlays are not cross polluting via central settings instances.
|
/// Ensure that two mod overlays are not cross polluting via central settings instances.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -464,6 +464,8 @@ namespace osu.Game.Overlays.Mods
|
|||||||
|
|
||||||
public Action? OnClicked { get; set; }
|
public Action? OnClicked { get; set; }
|
||||||
|
|
||||||
|
public override bool HandlePositionalInput => base.HandlePositionalInput && HandleMouse.Value;
|
||||||
|
|
||||||
protected override bool Handle(UIEvent e)
|
protected override bool Handle(UIEvent e)
|
||||||
{
|
{
|
||||||
if (!HandleMouse.Value)
|
if (!HandleMouse.Value)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user