From 6cc48eb976de65d71ed2b4f89936adff7122ea3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Mon, 31 Mar 2025 12:13:50 +0200 Subject: [PATCH] Fix enter-to-select-tag interaction --- osu.Game/Screens/Ranking/UserTagControl.cs | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/osu.Game/Screens/Ranking/UserTagControl.cs b/osu.Game/Screens/Ranking/UserTagControl.cs index cd5d2486fd..727e2b5f4a 100644 --- a/osu.Game/Screens/Ranking/UserTagControl.cs +++ b/osu.Game/Screens/Ranking/UserTagControl.cs @@ -17,8 +17,10 @@ using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Effects; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Sprites; +using osu.Framework.Input.Bindings; using osu.Framework.Input.Events; using osu.Framework.Localisation; +using osu.Framework.Testing; using osu.Game.Beatmaps; using osu.Game.Configuration; using osu.Game.Extensions; @@ -26,12 +28,12 @@ using osu.Game.Graphics; using osu.Game.Graphics.Containers; using osu.Game.Graphics.Sprites; using osu.Game.Graphics.UserInterface; +using osu.Game.Input.Bindings; using osu.Game.Online.API; using osu.Game.Online.API.Requests; using osu.Game.Online.API.Requests.Responses; using osu.Game.Screens.Ranking.Statistics; using osuTK; -using osuTK.Input; namespace osu.Game.Screens.Ranking { @@ -288,6 +290,10 @@ namespace osu.Game.Screens.Ranking protected override bool OnClick(ClickEvent e) => true; + public void OnReleased(KeyBindingReleaseEvent e) + { + } + private partial class DrawableUserTag : OsuAnimatedButton { public readonly UserTag UserTag; @@ -444,7 +450,7 @@ namespace osu.Game.Screens.Ranking } } - private partial class TagList : CompositeDrawable + private partial class TagList : CompositeDrawable, IKeyBindingHandler { private SearchTextBox searchBox = null!; private SearchContainer searchContainer = null!; @@ -532,20 +538,24 @@ namespace osu.Game.Screens.Ranking } } - protected override bool OnKeyDown(KeyDownEvent e) + public bool OnPressed(KeyBindingPressEvent e) { - if (e.Key == Key.Enter) + if (e.Action == GlobalAction.Select && !e.Repeat) { attemptSelect(); return true; } - return base.OnKeyDown(e); + return false; + } + + public void OnReleased(KeyBindingReleaseEvent e) + { } private void attemptSelect() { - var visibleItems = searchContainer.OfType().Where(d => d.IsPresent).ToArray(); + var visibleItems = searchContainer.ChildrenOfType().Where(d => d.IsPresent).ToArray(); if (visibleItems.Length == 1) OnSelected?.Invoke(visibleItems.Single().Tag);