Merge branch 'master' into fix-direct-hotkey

This commit is contained in:
Dean Herbert 2017-05-28 22:47:14 +09:00 committed by GitHub
commit bfede3647f
17 changed files with 66 additions and 45 deletions

@ -1 +1 @@
Subproject commit 8baad1b9484b9f35724e2f965c18cfe710907d80
Subproject commit 0b9053ec3d39b486165992374752b280c5eeef06

View File

@ -80,7 +80,7 @@ namespace osu.Desktop.VisualTests.Tests
private void triggerKeyDown(Column column)
{
column.TriggerKeyDown(new InputState(), new KeyDownEventArgs
column.TriggerOnKeyDown(new InputState(), new KeyDownEventArgs
{
Key = column.Key,
Repeat = false
@ -89,7 +89,7 @@ namespace osu.Desktop.VisualTests.Tests
private void triggerKeyUp(Column column)
{
column.TriggerKeyUp(new InputState(), new KeyUpEventArgs
column.TriggerOnKeyUp(new InputState(), new KeyUpEventArgs
{
Key = column.Key
});

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

@ -74,7 +74,7 @@ namespace osu.Game.Graphics.UserInterface.Volume
return;
}
volumeMeterMaster.TriggerWheel(state);
volumeMeterMaster.TriggerOnWheel(state);
}
[BackgroundDependencyLoader]

View File

@ -135,17 +135,22 @@ namespace osu.Game.Overlays
channelTabs.Current.ValueChanged += newChannel => CurrentChannel = newChannel;
}
private double startDragChatHeight;
protected override bool OnDragStart(InputState state)
{
if (channelTabs.Hovering)
return true;
if (!channelTabs.Hovering)
return base.OnDragStart(state);
return base.OnDragStart(state);
startDragChatHeight = chatHeight.Value;
return true;
}
protected override bool OnDrag(InputState state)
{
chatHeight.Value = Height - state.Mouse.Delta.Y / Parent.DrawSize.Y;
Trace.Assert(state.Mouse.PositionMouseDown != null);
chatHeight.Value = startDragChatHeight - (state.Mouse.Position.Y - state.Mouse.PositionMouseDown.Value.Y) / Parent.DrawSize.Y;
return base.OnDrag(state);
}
@ -165,7 +170,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

@ -71,7 +71,7 @@ namespace osu.Game.Overlays.Dialog
private void pressButtonAtIndex(int index)
{
if (index < Buttons.Count())
Buttons.Skip(index).First().TriggerClick();
Buttons.Skip(index).First().TriggerOnClick();
}
protected override bool OnKeyDown(InputState state, KeyDownEventArgs args)
@ -80,7 +80,7 @@ namespace osu.Game.Overlays.Dialog
if (args.Key == Key.Enter)
{
Buttons.OfType<PopupDialogOkButton>().FirstOrDefault()?.TriggerClick();
Buttons.OfType<PopupDialogOkButton>().FirstOrDefault()?.TriggerOnClick();
return true;
}

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

@ -66,7 +66,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);
@ -232,14 +237,7 @@ namespace osu.Game.Overlays.Settings.Sections.General
protected override bool OnFocus(InputState state)
{
Schedule(() =>
{
if (string.IsNullOrEmpty(username.Text))
username.TriggerFocus();
else
password.TriggerFocus();
});
Schedule(() => { inputManager.ChangeFocus(string.IsNullOrEmpty(username.Text) ? username : 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

@ -135,7 +135,7 @@ namespace osu.Game.Screens.Menu
switch (args.Key)
{
case Key.Space:
osuLogo.TriggerClick(state);
osuLogo.TriggerOnClick(state);
return true;
case Key.Escape:
switch (State)
@ -144,7 +144,7 @@ namespace osu.Game.Screens.Menu
State = MenuState.Initial;
return true;
case MenuState.Play:
backButton.TriggerClick();
backButton.TriggerOnClick();
return true;
}
@ -178,10 +178,10 @@ namespace osu.Game.Screens.Menu
State = MenuState.TopLevel;
return;
case MenuState.TopLevel:
buttonsTopLevel.First().TriggerClick();
buttonsTopLevel.First().TriggerOnClick();
return;
case MenuState.Play:
buttonsPlay.First().TriggerClick();
buttonsPlay.First().TriggerOnClick();
return;
}
}

View File

@ -26,7 +26,7 @@ namespace osu.Game.Screens.Play
{
if (!args.Repeat && args.Key == Key.Escape)
{
Buttons.Children.Last().TriggerClick();
Buttons.Children.Last().TriggerOnClick();
return true;
}

View File

@ -131,13 +131,13 @@ namespace osu.Game.Screens.Play
public override bool HandleInput => true;
protected override bool OnKeyDown(InputState state, KeyDownEventArgs args) => target.Children.Any(c => c.TriggerKeyDown(state, args));
protected override bool OnKeyDown(InputState state, KeyDownEventArgs args) => target.Children.Any(c => c.TriggerOnKeyDown(state, args));
protected override bool OnKeyUp(InputState state, KeyUpEventArgs args) => target.Children.Any(c => c.TriggerKeyUp(state, args));
protected override bool OnKeyUp(InputState state, KeyUpEventArgs args) => target.Children.Any(c => c.TriggerOnKeyUp(state, args));
protected override bool OnMouseDown(InputState state, MouseDownEventArgs args) => target.Children.Any(c => c.TriggerMouseDown(state, args));
protected override bool OnMouseDown(InputState state, MouseDownEventArgs args) => target.Children.Any(c => c.TriggerOnMouseDown(state, args));
protected override bool OnMouseUp(InputState state, MouseUpEventArgs args) => target.Children.Any(c => c.TriggerMouseUp(state, args));
protected override bool OnMouseUp(InputState state, MouseUpEventArgs args) => target.Children.Any(c => c.TriggerOnMouseUp(state, args));
}
}
}

View File

@ -136,7 +136,7 @@ namespace osu.Game.Screens.Play
{
if (!args.Repeat && args.Key == Key.Escape)
{
Buttons.Children.First().TriggerClick();
Buttons.Children.First().TriggerOnClick();
return true;
}

View File

@ -127,7 +127,7 @@ namespace osu.Game.Screens.Play
switch (args.Key)
{
case Key.Space:
button.TriggerClick();
button.TriggerOnClick();
return true;
}

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)