1
0
mirror of https://github.com/ppy/osu.git synced 2025-03-21 15:07:23 +08:00

Merge branch 'master' into master

This commit is contained in:
Bartłomiej Dach 2022-06-14 21:47:07 +02:00 committed by GitHub
commit 439ce63eb1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 134 additions and 38 deletions

View File

@ -6,11 +6,16 @@ using Moq;
using NUnit.Framework;
using osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Colour;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Shapes;
using osu.Framework.Testing;
using osu.Game.Graphics.Containers;
using osu.Game.Overlays;
using osu.Game.Overlays.Toolbar;
using osu.Game.Rulesets;
using osuTK.Graphics;
using osuTK.Input;
namespace osu.Game.Tests.Visual.Menus
@ -95,6 +100,28 @@ namespace osu.Game.Tests.Visual.Menus
AddAssert("toolbar is visible", () => toolbar.State.Value == Visibility.Visible);
}
[Test]
public void TestScrollInput()
{
OsuScrollContainer scroll = null;
AddStep("add scroll layer", () => Add(scroll = new OsuScrollContainer
{
Depth = 1f,
RelativeSizeAxes = Axes.Both,
Child = new Box
{
RelativeSizeAxes = Axes.X,
Height = DrawHeight * 2,
Colour = ColourInfo.GradientVertical(Color4.Gray, Color4.DarkGray),
}
}));
AddStep("hover toolbar", () => InputManager.MoveMouseTo(toolbar));
AddStep("perform scroll", () => InputManager.ScrollVerticalBy(500));
AddAssert("not scrolled", () => scroll.Current == 0);
}
public class TestToolbar : Toolbar
{
public new Bindable<OverlayActivation> OverlayActivationMode => base.OverlayActivationMode as Bindable<OverlayActivation>;

View File

@ -14,6 +14,7 @@ using osu.Framework.Bindables;
using osu.Framework.Input.Events;
using osu.Game.Rulesets;
using osu.Framework.Input.Bindings;
using osu.Game.Graphics.Containers;
using osu.Game.Input.Bindings;
namespace osu.Game.Overlays.Toolbar
@ -41,8 +42,6 @@ namespace osu.Game.Overlays.Toolbar
// Toolbar and its components need keyboard input even when hidden.
public override bool PropagateNonPositionalInputSubTree => true;
protected override bool BlockScrollInput => false;
public Toolbar()
{
RelativeSizeAxes = Axes.X;
@ -67,45 +66,115 @@ namespace osu.Game.Overlays.Toolbar
Children = new Drawable[]
{
new ToolbarBackground(),
new FillFlowContainer
new GridContainer
{
Direction = FillDirection.Horizontal,
RelativeSizeAxes = Axes.Y,
AutoSizeAxes = Axes.X,
Children = new Drawable[]
RelativeSizeAxes = Axes.Both,
ColumnDimensions = new[]
{
new ToolbarSettingsButton(),
new ToolbarHomeButton
new Dimension(GridSizeMode.AutoSize),
new Dimension(),
new Dimension(GridSizeMode.AutoSize)
},
Content = new[]
{
new Drawable[]
{
Action = () => OnHome?.Invoke()
new Container
{
Name = "Left buttons",
RelativeSizeAxes = Axes.Y,
AutoSizeAxes = Axes.X,
Depth = float.MinValue,
Children = new Drawable[]
{
new Box
{
Colour = OsuColour.Gray(0.1f),
RelativeSizeAxes = Axes.Both,
},
new FillFlowContainer
{
Direction = FillDirection.Horizontal,
RelativeSizeAxes = Axes.Y,
AutoSizeAxes = Axes.X,
Children = new Drawable[]
{
new ToolbarSettingsButton(),
new ToolbarHomeButton
{
Action = () => OnHome?.Invoke()
},
},
},
}
},
new Container
{
Name = "Ruleset selector",
RelativeSizeAxes = Axes.Both,
Children = new Drawable[]
{
new OsuScrollContainer(Direction.Horizontal)
{
ScrollbarVisible = false,
RelativeSizeAxes = Axes.Both,
Masking = false,
Children = new Drawable[]
{
rulesetSelector = new ToolbarRulesetSelector()
}
},
new Box
{
Colour = ColourInfo.GradientHorizontal(OsuColour.Gray(0.1f).Opacity(0), OsuColour.Gray(0.1f)),
Width = 50,
RelativeSizeAxes = Axes.Y,
Anchor = Anchor.TopRight,
Origin = Anchor.TopRight,
},
}
},
new Container
{
Name = "Right buttons",
RelativeSizeAxes = Axes.Y,
AutoSizeAxes = Axes.X,
Children = new Drawable[]
{
new Box
{
Colour = OsuColour.Gray(0.1f),
RelativeSizeAxes = Axes.Both,
},
new FillFlowContainer
{
Anchor = Anchor.TopRight,
Origin = Anchor.TopRight,
Direction = FillDirection.Horizontal,
RelativeSizeAxes = Axes.Y,
AutoSizeAxes = Axes.X,
Children = new Drawable[]
{
new ToolbarNewsButton(),
new ToolbarChangelogButton(),
new ToolbarRankingsButton(),
new ToolbarBeatmapListingButton(),
new ToolbarChatButton(),
new ToolbarSocialButton(),
new ToolbarWikiButton(),
new ToolbarMusicButton(),
//new ToolbarButton
//{
// Icon = FontAwesome.Solid.search
//},
userButton = new ToolbarUserButton(),
new ToolbarClock(),
new ToolbarNotificationButton(),
}
},
}
},
},
rulesetSelector = new ToolbarRulesetSelector()
}
},
new FillFlowContainer
{
Anchor = Anchor.TopRight,
Origin = Anchor.TopRight,
Direction = FillDirection.Horizontal,
RelativeSizeAxes = Axes.Y,
AutoSizeAxes = Axes.X,
Children = new Drawable[]
{
new ToolbarNewsButton(),
new ToolbarChangelogButton(),
new ToolbarRankingsButton(),
new ToolbarBeatmapListingButton(),
new ToolbarChatButton(),
new ToolbarSocialButton(),
new ToolbarWikiButton(),
new ToolbarMusicButton(),
//new ToolbarButton
//{
// Icon = FontAwesome.Solid.search
//},
userButton = new ToolbarUserButton(),
new ToolbarClock(),
new ToolbarNotificationButton(),
}
}
};

View File

@ -161,7 +161,7 @@ namespace osu.Game.Overlays.Toolbar
};
}
protected override bool OnMouseDown(MouseDownEvent e) => true;
protected override bool OnMouseDown(MouseDownEvent e) => false;
protected override bool OnClick(ClickEvent e)
{