diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneShearedToggleButton.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneShearedToggleButton.cs
index 5082e93f37..f12cbc4979 100644
--- a/osu.Game.Tests/Visual/UserInterface/TestSceneShearedToggleButton.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestSceneShearedToggleButton.cs
@@ -23,12 +23,11 @@ namespace osu.Game.Tests.Visual.UserInterface
AddStep("create button", () =>
{
- Child = button = new ShearedToggleButton
+ Child = button = new ShearedToggleButton(200)
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
Text = "Toggle me",
- Width = 200
};
});
@@ -36,6 +35,28 @@ namespace osu.Game.Tests.Visual.UserInterface
AddToggleStep("toggle disabled", disabled => button.Active.Disabled = disabled);
}
+ [Test]
+ public void TestSizing()
+ {
+ ShearedToggleButton toggleButton = null;
+
+ AddStep("create fixed width button", () => Child = toggleButton = new ShearedToggleButton(200)
+ {
+ Anchor = Anchor.Centre,
+ Origin = Anchor.Centre,
+ Text = "Fixed width"
+ });
+ AddStep("change text", () => toggleButton.Text = "New text");
+
+ AddStep("create auto-sizing button", () => Child = toggleButton = new ShearedToggleButton
+ {
+ Anchor = Anchor.Centre,
+ Origin = Anchor.Centre,
+ Text = "This button autosizes to its text!"
+ });
+ AddStep("change text", () => toggleButton.Text = "New text");
+ }
+
[Test]
public void TestDisabledState()
{
diff --git a/osu.Game/Graphics/UserInterface/ShearedToggleButton.cs b/osu.Game/Graphics/UserInterface/ShearedToggleButton.cs
index 27d2611983..aed3be20a0 100644
--- a/osu.Game/Graphics/UserInterface/ShearedToggleButton.cs
+++ b/osu.Game/Graphics/UserInterface/ShearedToggleButton.cs
@@ -42,7 +42,17 @@ namespace osu.Game.Graphics.UserInterface
[Resolved]
private OverlayColourProvider colourProvider { get; set; } = null!;
- public ShearedToggleButton()
+ ///
+ /// Creates a new
+ ///
+ ///
+ /// The width of the button.
+ ///
+ /// - If a non- value is provided, this button will have a fixed width equal to the provided value.
+ /// - If a value is provided (or the argument is omitted entirely), the button will autosize in width to fit the text.
+ ///
+ ///
+ public ShearedToggleButton(float? width = null)
{
Height = 50;
Padding = new MarginPadding { Horizontal = shear * 50 };
@@ -67,6 +77,16 @@ namespace osu.Game.Graphics.UserInterface
Shear = new Vector2(-shear, 0)
}
};
+
+ if (width != null)
+ {
+ Width = width.Value;
+ }
+ else
+ {
+ AutoSizeAxes = Axes.X;
+ text.Margin = new MarginPadding { Horizontal = 15 };
+ }
}
[BackgroundDependencyLoader]