mirror of
https://github.com/ppy/osu
synced 2024-12-14 02:46:27 +00:00
Better SearchTextBox focus handling.
This commit is contained in:
parent
2ffab66184
commit
ddea76927f
@ -61,13 +61,13 @@ namespace osu.Game.Screens.Select
|
|||||||
|
|
||||||
public void Deactivate()
|
public void Deactivate()
|
||||||
{
|
{
|
||||||
searchTextBox.GrabFocus = false;
|
searchTextBox.HoldFocus = false;
|
||||||
searchTextBox.TriggerFocusLost();
|
searchTextBox.TriggerFocusLost();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Activate()
|
public void Activate()
|
||||||
{
|
{
|
||||||
searchTextBox.GrabFocus = true;
|
searchTextBox.HoldFocus = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private class TabItem : ClickableContainer
|
private class TabItem : ClickableContainer
|
||||||
|
@ -17,8 +17,19 @@ namespace osu.Game.Screens.Select
|
|||||||
protected override Color4 BackgroundUnfocused => new Color4(10, 10, 10, 255);
|
protected override Color4 BackgroundUnfocused => new Color4(10, 10, 10, 255);
|
||||||
protected override Color4 BackgroundFocused => new Color4(10, 10, 10, 255);
|
protected override Color4 BackgroundFocused => new Color4(10, 10, 10, 255);
|
||||||
public Action Exit;
|
public Action Exit;
|
||||||
public bool GrabFocus = false;
|
|
||||||
|
private bool focus;
|
||||||
|
public bool HoldFocus
|
||||||
|
{
|
||||||
|
get { return focus; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
focus = value;
|
||||||
|
if (!focus)
|
||||||
|
TriggerFocusLost();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private SpriteText placeholder;
|
private SpriteText placeholder;
|
||||||
|
|
||||||
protected override string InternalText
|
protected override string InternalText
|
||||||
@ -36,7 +47,7 @@ namespace osu.Game.Screens.Select
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public SearchTextBox()
|
public SearchTextBox()
|
||||||
{
|
{
|
||||||
Height = 35;
|
Height = 35;
|
||||||
@ -61,21 +72,20 @@ namespace osu.Game.Screens.Select
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Update()
|
protected override void Update()
|
||||||
{
|
{
|
||||||
if (GrabFocus && !HasFocus && IsVisible)
|
if (HoldFocus) RequestFocus();
|
||||||
TriggerFocus();
|
|
||||||
base.Update();
|
base.Update();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnFocusLost(InputState state)
|
protected override void OnFocusLost(InputState state)
|
||||||
{
|
{
|
||||||
if (state.Keyboard.Keys.Any(key => key == Key.Escape))
|
if (state.Keyboard.Keys.Any(key => key == Key.Escape))
|
||||||
Exit?.Invoke();
|
Exit?.Invoke();
|
||||||
base.OnFocusLost(state);
|
base.OnFocusLost(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override bool OnKeyDown(InputState state, KeyDownEventArgs args)
|
protected override bool OnKeyDown(InputState state, KeyDownEventArgs args)
|
||||||
{
|
{
|
||||||
if (args.Key == Key.Left || args.Key == Key.Right || args.Key == Key.Enter)
|
if (args.Key == Key.Left || args.Key == Key.Right || args.Key == Key.Enter)
|
||||||
|
Loading…
Reference in New Issue
Block a user