Skip to content

Commit 14743a1

Browse files
peppybdach
andauthored
Fix "Deselect all" mods button becoming enabled when system mods are applied (ppy#36913)
Closes ppy#36906. --------- Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
1 parent 9105fc1 commit 14743a1

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -698,6 +698,35 @@ public void TestDeselectAllViaKey_WithSearchApplied()
698698
AddUntilStep("all mods deselected", () => !SelectedMods.Value.Any());
699699
}
700700

701+
[Test]
702+
public void TestTouchDeviceDoesNotInterfereWithDeselectAll()
703+
{
704+
createScreen();
705+
changeRuleset(0);
706+
707+
AddAssert("deselect all button disabled", () => !this.ChildrenOfType<DeselectAllModsButton>().Single().Enabled.Value);
708+
709+
AddStep("select TD", () => SelectedMods.Value = new Mod[] { new OsuModTouchDevice() });
710+
AddAssert("deselect all button still disabled", () => !this.ChildrenOfType<DeselectAllModsButton>().Single().Enabled.Value);
711+
712+
AddStep("click deselect all button", () =>
713+
{
714+
InputManager.MoveMouseTo(this.ChildrenOfType<DeselectAllModsButton>().Single());
715+
InputManager.Click(MouseButton.Left);
716+
});
717+
718+
AddUntilStep("touch mod still present", () => SelectedMods.Value, () => Is.EqualTo(new Mod[] { new OsuModTouchDevice() }));
719+
720+
AddStep("select NC + TD", () => SelectedMods.Value = new Mod[] { new OsuModTouchDevice(), new OsuModNightcore() });
721+
AddStep("click deselect all button", () =>
722+
{
723+
InputManager.MoveMouseTo(this.ChildrenOfType<DeselectAllModsButton>().Single());
724+
InputManager.Click(MouseButton.Left);
725+
});
726+
727+
AddUntilStep("touch mod still present", () => SelectedMods.Value, () => Is.EqualTo(new Mod[] { new OsuModTouchDevice() }));
728+
}
729+
701730
[Test]
702731
public void TestDeselectAllViaButton()
703732
{

osu.Game/Overlays/Mods/DeselectAllModsButton.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ protected override void LoadComplete()
3333

3434
private void updateEnabledState()
3535
{
36-
Enabled.Value = selectedMods.Value.Any();
36+
Enabled.Value = selectedMods.Value.Any(m => m.Type != ModType.System);
3737
}
3838
}
3939
}

0 commit comments

Comments
 (0)