1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-15 07:22:55 +08:00

Fix appearance of sheared button borders after click

The border would previously get brighter after click, but then dim
instantly when the flash layer has fully faded out. The underlying issue
there is https://github.com/ppy/osu-framework/issues/5191, but
`ShearedButton` was placing the flashing layer incorrectly anyway, as
the intent was that it should also apply to the border.
This commit is contained in:
Bartłomiej Dach 2022-05-21 20:49:29 +02:00
parent 6994b8d392
commit 21e1576b2f
No known key found for this signature in database
GPG Key ID: BCECCD4FA41F6497

View File

@ -5,6 +5,7 @@
using osu.Framework.Allocation;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Colour;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Shapes;
using osu.Framework.Input.Events;
using osu.Framework.Localisation;
@ -68,6 +69,7 @@ namespace osu.Game.Graphics.UserInterface
private Colour4? lighterColour;
private Colour4? textColour;
private readonly Container backgroundLayer;
private readonly Box flashLayer;
/// <summary>
@ -85,12 +87,21 @@ namespace osu.Game.Graphics.UserInterface
Height = 50;
Padding = new MarginPadding { Horizontal = shear * 50 };
Content.CornerRadius = 7;
const float corner_radius = 7;
Content.CornerRadius = corner_radius;
Content.Shear = new Vector2(shear, 0);
Content.Masking = true;
Content.BorderThickness = 2;
Content.Anchor = Content.Origin = Anchor.Centre;
Children = new Drawable[]
{
backgroundLayer = new Container
{
RelativeSizeAxes = Axes.Both,
CornerRadius = corner_radius,
Masking = true,
BorderThickness = 2,
Children = new Drawable[]
{
background = new Box
@ -104,6 +115,8 @@ namespace osu.Game.Graphics.UserInterface
Font = OsuFont.TorusAlternate.With(size: 17),
Shear = new Vector2(-shear, 0)
},
}
},
flashLayer = new Box
{
RelativeSizeAxes = Axes.Both,
@ -186,7 +199,7 @@ namespace osu.Game.Graphics.UserInterface
}
background.FadeColour(colourDark, 150, Easing.OutQuint);
Content.TransformTo(nameof(BorderColour), ColourInfo.GradientVertical(colourDark, colourLight), 150, Easing.OutQuint);
backgroundLayer.TransformTo(nameof(BorderColour), ColourInfo.GradientVertical(colourDark, colourLight), 150, Easing.OutQuint);
if (!Enabled.Value)
colourText = colourText.Opacity(0.6f);