From 1e809c7f16dcd5e7b543f82e75cc791189e57209 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 13 Dec 2024 17:18:00 +0900 Subject: [PATCH] Fix player settings overlay appearing while in skin editor --- .../Screens/Play/HUD/PlayerSettingsOverlay.cs | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Play/HUD/PlayerSettingsOverlay.cs b/osu.Game/Screens/Play/HUD/PlayerSettingsOverlay.cs index 18d7f6a503..d2fb2e719a 100644 --- a/osu.Game/Screens/Play/HUD/PlayerSettingsOverlay.cs +++ b/osu.Game/Screens/Play/HUD/PlayerSettingsOverlay.cs @@ -86,11 +86,31 @@ namespace osu.Game.Screens.Play.HUD inputManager = GetContainingInputManager()!; } + public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => + screenSpacePos.X > button.ScreenSpaceDrawQuad.TopLeft.X; + + protected override bool OnMouseMove(MouseMoveEvent e) + { + checkExpanded(); + return base.OnMouseMove(e); + } + protected override void Update() { base.Update(); - Expanded.Value = inputManager.CurrentState.Mouse.Position.X >= button.ScreenSpaceDrawQuad.TopLeft.X; + // Only check expanded if already expanded. + // This is because if we are always checking, it would bypass blocking overlays. + // Case in point: the skin editor overlay blocks input from reaching the player, but checking raw coordinates would make settings pop out. + if (Expanded.Value) + checkExpanded(); + } + + private void checkExpanded() + { + float screenMouseX = inputManager.CurrentState.Mouse.Position.X; + + Expanded.Value = screenMouseX >= button.ScreenSpaceDrawQuad.TopLeft.X && screenMouseX <= ToScreenSpace(new Vector2(DrawWidth + EXPANDED_WIDTH, 0)).X; } protected override void OnHoverLost(HoverLostEvent e)