mirror of
https://github.com/ppy/osu.git
synced 2025-01-15 09:22:54 +08:00
Fix IconButtons not being scaled correctly
This commit is contained in:
parent
73a83e7f05
commit
15b9b53d35
@ -26,8 +26,7 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
{
|
{
|
||||||
new NamedIconButton("No change", new IconButton()),
|
new NamedIconButton("No change", new IconButton()),
|
||||||
new NamedIconButton("Background colours", new ColouredIconButton()),
|
new NamedIconButton("Background colours", new ColouredIconButton()),
|
||||||
new NamedIconButton("Full-width", new IconButton { ButtonSize = new Vector2(200, 30) }),
|
new NamedIconButton("Full-width", new IconButton { Size = new Vector2(200, 30) }),
|
||||||
new NamedIconButton("Unchanging size", new IconButton(), false),
|
|
||||||
new NamedIconButton("Icon colours", new IconButton
|
new NamedIconButton("Icon colours", new IconButton
|
||||||
{
|
{
|
||||||
IconColour = Color4.Green,
|
IconColour = Color4.Green,
|
||||||
@ -48,7 +47,7 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
|
|
||||||
private class NamedIconButton : Container
|
private class NamedIconButton : Container
|
||||||
{
|
{
|
||||||
public NamedIconButton(string name, IconButton button, bool allowSizeChange = true)
|
public NamedIconButton(string name, IconButton button)
|
||||||
{
|
{
|
||||||
AutoSizeAxes = Axes.Y;
|
AutoSizeAxes = Axes.Y;
|
||||||
Width = 200;
|
Width = 200;
|
||||||
@ -101,13 +100,7 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (allowSizeChange)
|
iconContainer.AutoSizeAxes = Axes.Both;
|
||||||
iconContainer.AutoSizeAxes = Axes.Both;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
iconContainer.RelativeSizeAxes = Axes.X;
|
|
||||||
iconContainer.Height = 30;
|
|
||||||
}
|
|
||||||
|
|
||||||
button.Anchor = Anchor.Centre;
|
button.Anchor = Anchor.Centre;
|
||||||
button.Origin = Anchor.Centre;
|
button.Origin = Anchor.Centre;
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
|
||||||
using osu.Framework.Timing;
|
using osu.Framework.Timing;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
|
|
||||||
@ -23,9 +22,9 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
};
|
};
|
||||||
Add(mc);
|
Add(mc);
|
||||||
|
|
||||||
AddToggleStep(@"toggle visibility", state => mc.State.Value = state ? Visibility.Visible : Visibility.Hidden);
|
|
||||||
AddStep(@"show", () => mc.Show());
|
AddStep(@"show", () => mc.Show());
|
||||||
AddToggleStep(@"toggle beatmap lock", state => Beatmap.Disabled = state);
|
AddToggleStep(@"toggle beatmap lock", state => Beatmap.Disabled = state);
|
||||||
|
AddStep(@"show", () => mc.Hide());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
{
|
{
|
||||||
public class IconButton : OsuAnimatedButton
|
public class IconButton : OsuAnimatedButton
|
||||||
{
|
{
|
||||||
public const float BUTTON_SIZE = 30;
|
public const float DEFAULT_BUTTON_SIZE = 30;
|
||||||
|
|
||||||
private Color4? iconColour;
|
private Color4? iconColour;
|
||||||
|
|
||||||
@ -57,26 +57,11 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
set => icon.Scale = value;
|
set => icon.Scale = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The size of the <see cref="IconButton"/> while it is not being pressed.
|
|
||||||
/// </summary>
|
|
||||||
public Vector2 ButtonSize
|
|
||||||
{
|
|
||||||
get => Content.Size;
|
|
||||||
set
|
|
||||||
{
|
|
||||||
Content.RelativeSizeAxes = Axes.None;
|
|
||||||
Content.AutoSizeAxes = Axes.None;
|
|
||||||
Content.Size = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private readonly SpriteIcon icon;
|
private readonly SpriteIcon icon;
|
||||||
|
|
||||||
public IconButton()
|
public IconButton()
|
||||||
{
|
{
|
||||||
AutoSizeAxes = Axes.Both;
|
Size = new Vector2(DEFAULT_BUTTON_SIZE);
|
||||||
ButtonSize = new Vector2(BUTTON_SIZE);
|
|
||||||
|
|
||||||
Add(icon = new SpriteIcon
|
Add(icon = new SpriteIcon
|
||||||
{
|
{
|
||||||
|
@ -464,12 +464,26 @@ namespace osu.Game.Overlays
|
|||||||
|
|
||||||
private class MusicIconButton : IconButton
|
private class MusicIconButton : IconButton
|
||||||
{
|
{
|
||||||
|
public MusicIconButton()
|
||||||
|
{
|
||||||
|
AutoSizeAxes = Axes.Both;
|
||||||
|
}
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load(OsuColour colours)
|
private void load(OsuColour colours)
|
||||||
{
|
{
|
||||||
HoverColour = colours.YellowDark.Opacity(0.6f);
|
HoverColour = colours.YellowDark.Opacity(0.6f);
|
||||||
FlashColour = colours.Yellow;
|
FlashColour = colours.Yellow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void LoadComplete()
|
||||||
|
{
|
||||||
|
base.LoadComplete();
|
||||||
|
|
||||||
|
// works with AutoSizeAxes above to make buttons autosize with the scale animation.
|
||||||
|
Content.AutoSizeAxes = Axes.None;
|
||||||
|
Content.Size = new Vector2(DEFAULT_BUTTON_SIZE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class Background : BufferedContainer
|
private class Background : BufferedContainer
|
||||||
|
@ -171,7 +171,7 @@ namespace osu.Game.Screens.Edit.Compose.Components
|
|||||||
// Small offset to look a bit better centered along with the divisor text
|
// Small offset to look a bit better centered along with the divisor text
|
||||||
Y = 1;
|
Y = 1;
|
||||||
|
|
||||||
ButtonSize = new Vector2(20);
|
Size = new Vector2(20);
|
||||||
IconScale = new Vector2(0.6f);
|
IconScale = new Vector2(0.6f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,14 +31,14 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
|
|||||||
InternalChild = button = new TimelineIconButton { Action = () => Action?.Invoke() };
|
InternalChild = button = new TimelineIconButton { Action = () => Action?.Invoke() };
|
||||||
|
|
||||||
button.Enabled.BindTo(Enabled);
|
button.Enabled.BindTo(Enabled);
|
||||||
Width = button.ButtonSize.X;
|
Width = button.Width;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Update()
|
protected override void Update()
|
||||||
{
|
{
|
||||||
base.Update();
|
base.Update();
|
||||||
|
|
||||||
button.ButtonSize = new Vector2(button.ButtonSize.X, DrawHeight);
|
button.Size = new Vector2(button.Width, DrawHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
private class TimelineIconButton : IconButton
|
private class TimelineIconButton : IconButton
|
||||||
|
Loading…
Reference in New Issue
Block a user