mirror of
https://github.com/ppy/osu.git
synced 2025-01-14 17:52:56 +08:00
Ensure focus is directed to ChatTextBox
from ChatOverlay
and add tests
This commit is contained in:
parent
ddab3c6d80
commit
1a85e1267b
@ -144,7 +144,7 @@ namespace osu.Game.Tests.Visual.Online
|
||||
{
|
||||
AddStep("Show overlay", () => chatOverlay.Show());
|
||||
AddAssert("Listing is visible", () => listingVisibility == Visibility.Visible);
|
||||
AddStep("Search for 'number 2'", () => chatOverlay.ChildrenOfType<ChatTextBox>().Single().Text = "number 2");
|
||||
AddStep("Search for 'number 2'", () => chatOverlayTextBox.Text = "number 2");
|
||||
AddUntilStep("Only channel 2 visibile", () =>
|
||||
{
|
||||
IEnumerable<ChannelListingItem> listingItems = chatOverlay.ChildrenOfType<ChannelListingItem>()
|
||||
@ -325,6 +325,28 @@ namespace osu.Game.Tests.Visual.Online
|
||||
AddStep("Highlight message", () => chatOverlay.HighlightMessage(message, testChannel1));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TextBoxRetainsFocus()
|
||||
{
|
||||
AddStep("Show overlay", () => chatOverlay.Show());
|
||||
AddAssert("TextBox is focused", () => InputManager.FocusedDrawable == chatOverlayTextBox);
|
||||
AddStep("Join channel 1", () => channelManager.JoinChannel(testChannel1));
|
||||
AddStep("Select channel 1", () => clickDrawable(getChannelListItem(testChannel1)));
|
||||
AddAssert("TextBox is focused", () => InputManager.FocusedDrawable == chatOverlayTextBox);
|
||||
AddStep("Click selector", () => clickDrawable(chatOverlay.ChildrenOfType<ChannelListSelector>().Single()));
|
||||
AddAssert("TextBox is focused", () => InputManager.FocusedDrawable == chatOverlayTextBox);
|
||||
AddStep("Click listing", () => clickDrawable(chatOverlay.ChildrenOfType<ChannelListing>().Single()));
|
||||
AddAssert("TextBox is focused", () => InputManager.FocusedDrawable == chatOverlayTextBox);
|
||||
AddStep("Click drawable channel", () => clickDrawable(chatOverlay.ChildrenOfType<DrawableChannel>().Single()));
|
||||
AddAssert("TextBox is focused", () => InputManager.FocusedDrawable == chatOverlayTextBox);
|
||||
AddStep("Click channel list", () => clickDrawable(chatOverlay.ChildrenOfType<ChannelList>().Single()));
|
||||
AddAssert("TextBox is focused", () => InputManager.FocusedDrawable == chatOverlayTextBox);
|
||||
AddStep("Click top bar", () => clickDrawable(chatOverlay.ChildrenOfType<ChatOverlayTopBar>().Single()));
|
||||
AddAssert("TextBox is focused", () => InputManager.FocusedDrawable == chatOverlayTextBox);
|
||||
AddStep("Hide overlay", () => chatOverlay.Hide());
|
||||
AddAssert("TextBox is not focused", () => InputManager.FocusedDrawable == null);
|
||||
}
|
||||
|
||||
private Visibility listingVisibility =>
|
||||
chatOverlay.ChildrenOfType<ChannelListing>().Single().State.Value;
|
||||
|
||||
@ -337,6 +359,9 @@ namespace osu.Game.Tests.Visual.Online
|
||||
private ChannelListItem getChannelListItem(Channel channel) =>
|
||||
chatOverlay.ChildrenOfType<ChannelListItem>().Single(item => item.Channel == channel);
|
||||
|
||||
private ChatTextBox chatOverlayTextBox =>
|
||||
chatOverlay.ChildrenOfType<ChatTextBox>().Single();
|
||||
|
||||
private void clickDrawable(Drawable d)
|
||||
{
|
||||
InputManager.MoveMouseTo(d);
|
||||
|
@ -218,8 +218,6 @@ namespace osu.Game.Overlays
|
||||
|
||||
this.MoveToY(0, transition_length, Easing.OutQuint);
|
||||
this.FadeIn(transition_length, Easing.OutQuint);
|
||||
|
||||
textBar.TextBoxTakeFocus();
|
||||
}
|
||||
|
||||
protected override void PopOut()
|
||||
@ -232,6 +230,12 @@ namespace osu.Game.Overlays
|
||||
textBar.TextBoxKillFocus();
|
||||
}
|
||||
|
||||
protected override void OnFocus(FocusEvent e)
|
||||
{
|
||||
textBar.TextBoxTakeFocus();
|
||||
base.OnFocus(e);
|
||||
}
|
||||
|
||||
private void currentChannelChanged(ValueChangedEvent<Channel> e)
|
||||
{
|
||||
Channel? newChannel = e.NewValue;
|
||||
|
Loading…
Reference in New Issue
Block a user