1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-28 06:42:54 +08:00

Update focus handling in line with framework changes

This commit is contained in:
Dean Herbert 2017-05-28 20:08:46 +09:00
parent bdeaf2dbb4
commit d749fc516d
8 changed files with 42 additions and 18 deletions

View File

@ -3,6 +3,7 @@
using OpenTK.Graphics;
using OpenTK.Input;
using osu.Framework.Allocation;
using osu.Framework.Input;
using System;
using System.Linq;
@ -23,11 +24,19 @@ namespace osu.Game.Graphics.UserInterface
set
{
focus = value;
if (!focus)
TriggerFocusLost();
if (!focus && HasFocus)
inputManager.ChangeFocus(null);
}
}
private InputManager inputManager;
[BackgroundDependencyLoader]
private void load(UserInputManager inputManager)
{
this.inputManager = inputManager;
}
protected override bool OnFocus(InputState state)
{
var result = base.OnFocus(state);

View File

@ -165,7 +165,7 @@ namespace osu.Game.Overlays
protected override bool OnFocus(InputState state)
{
//this is necessary as inputTextBox is masked away and therefore can't get focus :(
inputTextBox.TriggerFocus();
InputManager.ChangeFocus(inputTextBox);
return false;
}

View File

@ -189,7 +189,7 @@ namespace osu.Game.Overlays
protected override bool OnFocus(InputState state)
{
filter.Search.TriggerFocus();
InputManager.ChangeFocus(filter.Search);
return false;
}

View File

@ -8,6 +8,7 @@ using osu.Framework.Graphics.Sprites;
using osu.Game.Graphics;
using osu.Game.Overlays.Settings.Sections.General;
using OpenTK.Graphics;
using osu.Framework.Input;
namespace osu.Game.Overlays
{
@ -66,7 +67,7 @@ namespace osu.Game.Overlays
settingsSection.Bounding = true;
FadeIn(transition_time, EasingTypes.OutQuint);
settingsSection.TriggerFocus();
InputManager.ChangeFocus(settingsSection);
}
protected override void PopOut()

View File

@ -17,6 +17,7 @@ using osu.Game.Graphics;
using OpenTK;
using OpenTK.Graphics;
using osu.Framework.Extensions;
using osu.Framework.Input;
namespace osu.Game.Overlays.Music
{
@ -35,10 +36,12 @@ namespace osu.Game.Overlays.Music
private readonly Bindable<WorkingBeatmap> beatmapBacking = new Bindable<WorkingBeatmap>();
public IEnumerable<BeatmapSetInfo> BeatmapSets;
private InputManager inputManager;
[BackgroundDependencyLoader]
private void load(OsuGameBase game, BeatmapDatabase beatmaps, OsuColour colours)
private void load(OsuGameBase game, BeatmapDatabase beatmaps, OsuColour colours, UserInputManager inputManager)
{
this.inputManager = inputManager;
this.beatmaps = beatmaps;
trackManager = game.Audio.Track;
@ -100,7 +103,7 @@ namespace osu.Game.Overlays.Music
protected override void PopIn()
{
filter.Search.HoldFocus = true;
Schedule(() => filter.Search.TriggerFocus());
Schedule(() => inputManager.ChangeFocus(filter.Search));
ResizeTo(new Vector2(1, playlist_height), transition_duration, EasingTypes.OutQuint);
FadeIn(transition_duration, EasingTypes.OutQuint);

View File

@ -51,9 +51,12 @@ namespace osu.Game.Overlays.Settings.Sections.General
Spacing = new Vector2(0f, 5f);
}
private InputManager inputManager;
[BackgroundDependencyLoader(permitNulls: true)]
private void load(OsuColour colours, APIAccess api)
private void load(OsuColour colours, APIAccess api, UserInputManager inputManager)
{
this.inputManager = inputManager;
this.colours = colours;
api?.Register(this);
}
@ -160,12 +163,12 @@ namespace osu.Game.Overlays.Settings.Sections.General
break;
}
form?.TriggerFocus();
if (form != null) inputManager.ChangeFocus(form);
}
protected override bool OnFocus(InputState state)
{
form?.TriggerFocus();
if (form != null) inputManager.ChangeFocus(form);
return base.OnFocus(state);
}
@ -174,6 +177,7 @@ namespace osu.Game.Overlays.Settings.Sections.General
private TextBox username;
private TextBox password;
private APIAccess api;
private InputManager inputManager;
private void performLogin()
{
@ -182,8 +186,9 @@ namespace osu.Game.Overlays.Settings.Sections.General
}
[BackgroundDependencyLoader(permitNulls: true)]
private void load(APIAccess api, OsuConfigManager config)
private void load(APIAccess api, OsuConfigManager config, UserInputManager inputManager)
{
this.inputManager = inputManager;
this.api = api;
Direction = FillDirection.Vertical;
Spacing = new Vector2(0, 5);
@ -235,9 +240,9 @@ namespace osu.Game.Overlays.Settings.Sections.General
Schedule(() =>
{
if (string.IsNullOrEmpty(username.Text))
username.TriggerFocus();
inputManager.ChangeFocus(username);
else
password.TriggerFocus();
inputManager.ChangeFocus(password);
});
return base.OnFocus(state);

View File

@ -134,12 +134,13 @@ namespace osu.Game.Overlays
FadeTo(0, TRANSITION_LENGTH / 2);
searchTextBox.HoldFocus = false;
searchTextBox.TriggerFocusLost();
if (searchTextBox.HasFocus)
InputManager.ChangeFocus(null);
}
protected override bool OnFocus(InputState state)
{
searchTextBox.TriggerFocus(state);
InputManager.ChangeFocus(searchTextBox);
return false;
}

View File

@ -154,7 +154,8 @@ namespace osu.Game.Screens.Select
public void Deactivate()
{
searchTextBox.HoldFocus = false;
searchTextBox.TriggerFocusLost();
if (searchTextBox.HasFocus)
inputManager.ChangeFocus(searchTextBox);
}
public void Activate()
@ -164,9 +165,13 @@ namespace osu.Game.Screens.Select
private readonly Bindable<RulesetInfo> ruleset = new Bindable<RulesetInfo>();
[BackgroundDependencyLoader(permitNulls:true)]
private void load(OsuColour colours, OsuGame osu)
private InputManager inputManager;
[BackgroundDependencyLoader(permitNulls: true)]
private void load(OsuColour colours, OsuGame osu, UserInputManager inputManager)
{
this.inputManager = inputManager;
sortTabs.AccentColour = colours.GreenLight;
if (osu != null)