diff --git a/osu.Game.Tests/Visual/Navigation/TestSceneScreenFooterNavigation.cs b/osu.Game.Tests/Visual/Navigation/TestSceneScreenFooterNavigation.cs index 27c7528efa..7c8ff56a57 100644 --- a/osu.Game.Tests/Visual/Navigation/TestSceneScreenFooterNavigation.cs +++ b/osu.Game.Tests/Visual/Navigation/TestSceneScreenFooterNavigation.cs @@ -349,8 +349,8 @@ namespace osu.Game.Tests.Visual.Navigation AutoSizeAxes = Axes.Both, Children = new[] { - new ShearedButton(200) { Text = "Action #1", Action = () => { } }, - new ShearedButton(140) { Text = "Action #2", Action = () => { } }, + new ShearedButton { Width = 200, Text = "Action #1", Action = () => { } }, + new ShearedButton { Width = 140, Text = "Action #2", Action = () => { } }, } }; } diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneButtonsInput.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneButtonsInput.cs index f30b82d618..5c98f27d86 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneButtonsInput.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneButtonsInput.cs @@ -72,12 +72,13 @@ namespace osu.Game.Tests.Visual.UserInterface Enabled = { Value = true }, Text = "Rounded button" }, - shearedButton = new ShearedButton(width) + shearedButton = new ShearedButton { Text = "Sheared button", LighterColour = Colour4.FromHex("#FFFFFF"), DarkerColour = Colour4.FromHex("#FFCC22"), TextColour = Colour4.Black, + Width = width, Height = 40, Enabled = { Value = true }, Padding = new MarginPadding(0) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneScreenFooter.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneScreenFooter.cs index a958c5f43e..97b7292497 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneScreenFooter.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneScreenFooter.cs @@ -342,8 +342,8 @@ namespace osu.Game.Tests.Visual.UserInterface AutoSizeAxes = Axes.Both, Children = new[] { - new ShearedButton(200) { Text = "Action #1", Action = () => { } }, - new ShearedButton(140) { Text = "Action #2", Action = () => { } }, + new ShearedButton { Width = 200, Text = "Action #1", Action = () => { } }, + new ShearedButton { Width = 140, Text = "Action #2", Action = () => { } }, } }; } diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneShearedButtons.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneShearedButtons.cs index bdec96f446..f226920cb6 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneShearedButtons.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneShearedButtons.cs @@ -36,8 +36,10 @@ namespace osu.Game.Tests.Visual.UserInterface if (bigButton) { - Child = button = new ShearedButton(400, 80) + Child = button = new ShearedButton { + Width = 400, + Height = 80, LighterColour = Colour4.FromHex("#FFFFFF"), DarkerColour = Colour4.FromHex("#FFCC22"), TextColour = Colour4.Black, @@ -50,8 +52,10 @@ namespace osu.Game.Tests.Visual.UserInterface } else { - Child = button = new ShearedButton(200, 80) + Child = button = new ShearedButton { + Width = 200, + Height = 80, LighterColour = Colour4.FromHex("#FF86DD"), DarkerColour = Colour4.FromHex("#DE31AE"), TextColour = Colour4.White, @@ -79,8 +83,9 @@ namespace osu.Game.Tests.Visual.UserInterface AddStep("create button", () => { - Child = button = new ShearedToggleButton(200) + Child = button = new ShearedToggleButton { + Width = 200, Anchor = Anchor.Centre, Origin = Anchor.Centre, Text = "Toggle me", @@ -96,8 +101,9 @@ namespace osu.Game.Tests.Visual.UserInterface { ShearedToggleButton toggleButton = null; - AddStep("create fixed width button", () => Child = toggleButton = new ShearedToggleButton(200) + AddStep("create fixed width button", () => Child = toggleButton = new ShearedToggleButton { + Width = 200, Anchor = Anchor.Centre, Origin = Anchor.Centre, Text = "Fixed width" @@ -109,6 +115,7 @@ namespace osu.Game.Tests.Visual.UserInterface AddStep("create auto-sizing button", () => Child = toggleButton = new ShearedToggleButton { + AutoSizeAxes = Axes.X, Anchor = Anchor.Centre, Origin = Anchor.Centre, Text = "This button autosizes to its text!" @@ -130,8 +137,9 @@ namespace osu.Game.Tests.Visual.UserInterface AddStep("create button", () => { - Child = button = new ShearedToggleButton(200) + Child = button = new ShearedToggleButton { + Width = 200, Anchor = Anchor.Centre, Origin = Anchor.Centre, Text = "Toggle me", @@ -186,6 +194,7 @@ namespace osu.Game.Tests.Visual.UserInterface { new ShearedButton { + AutoSizeAxes = Axes.X, Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, Text = "Button", @@ -194,6 +203,7 @@ namespace osu.Game.Tests.Visual.UserInterface }, new ShearedButton { + AutoSizeAxes = Axes.X, Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, Text = "Button", @@ -202,6 +212,7 @@ namespace osu.Game.Tests.Visual.UserInterface }, new ShearedButton { + AutoSizeAxes = Axes.X, Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, Text = "Button", diff --git a/osu.Game/Graphics/UserInterface/ShearedButton.cs b/osu.Game/Graphics/UserInterface/ShearedButton.cs index 2047fc74f4..e6737d6a57 100644 --- a/osu.Game/Graphics/UserInterface/ShearedButton.cs +++ b/osu.Game/Graphics/UserInterface/ShearedButton.cs @@ -75,19 +75,15 @@ namespace osu.Game.Graphics.UserInterface protected readonly Container ButtonContent; /// - /// Creates a new + /// 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. - /// - /// - /// The height of the button. - public ShearedButton(float? width = null, float height = DEFAULT_HEIGHT) + /// + /// By default, the button will have a height of . + /// Width should be set for each usage. + /// + public ShearedButton() { - Height = height; + Height = DEFAULT_HEIGHT; Shear = OsuGame.SHEAR; @@ -99,27 +95,25 @@ namespace osu.Game.Graphics.UserInterface { backgroundLayer = new Container { - RelativeSizeAxes = Axes.Y, + RelativeSizeAxes = Axes.Both, CornerRadius = CORNER_RADIUS, Masking = true, BorderThickness = BORDER_THICKNESS, - Children = new Drawable[] + Child = background = new Box { - background = new Box - { - RelativeSizeAxes = Axes.Both - }, - ButtonContent = new Container - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - AutoSizeAxes = Axes.Both, - Shear = -OsuGame.SHEAR, - Child = text = new OsuSpriteText - { - Font = OsuFont.TorusAlternate.With(size: 17), - } - }, + RelativeSizeAxes = Axes.Both, + }, + }, + ButtonContent = new Container + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + AutoSizeAxes = Axes.Both, + Shear = -OsuGame.SHEAR, + Child = text = new OsuSpriteText + { + Font = OsuFont.TorusAlternate.With(size: 17), + Margin = new MarginPadding { Horizontal = 15 }, } }, flashLayer = new Box @@ -130,18 +124,6 @@ namespace osu.Game.Graphics.UserInterface Alpha = 0, }, }; - - if (width != null) - { - Width = width.Value; - backgroundLayer.RelativeSizeAxes = Axes.Both; - } - else - { - AutoSizeAxes = Axes.X; - backgroundLayer.AutoSizeAxes = Axes.X; - text.Margin = new MarginPadding { Horizontal = 15 }; - } } protected override HoverSounds CreateHoverSounds(HoverSampleSet sampleSet) => new HoverClickSounds(sampleSet) { Enabled = { BindTarget = Enabled } }; diff --git a/osu.Game/Graphics/UserInterface/ShearedToggleButton.cs b/osu.Game/Graphics/UserInterface/ShearedToggleButton.cs index c2f547ba19..7731425635 100644 --- a/osu.Game/Graphics/UserInterface/ShearedToggleButton.cs +++ b/osu.Game/Graphics/UserInterface/ShearedToggleButton.cs @@ -24,21 +24,6 @@ namespace osu.Game.Graphics.UserInterface /// public BindableBool Active { get; } = new BindableBool(); - /// - /// 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) - : base(width) - { - } - [BackgroundDependencyLoader] private void load(AudioManager audio) { diff --git a/osu.Game/Overlays/Mods/AddPresetButton.cs b/osu.Game/Overlays/Mods/AddPresetButton.cs index e4f7f83c11..0844291f91 100644 --- a/osu.Game/Overlays/Mods/AddPresetButton.cs +++ b/osu.Game/Overlays/Mods/AddPresetButton.cs @@ -27,7 +27,6 @@ namespace osu.Game.Overlays.Mods private Bindable> selectedMods { get; set; } = null!; public AddPresetButton() - : base(1) { RelativeSizeAxes = Axes.X; Height = ModSelectPanel.HEIGHT; diff --git a/osu.Game/Overlays/Mods/AddPresetPopover.cs b/osu.Game/Overlays/Mods/AddPresetPopover.cs index 817a61f7ac..831f03f78c 100644 --- a/osu.Game/Overlays/Mods/AddPresetPopover.cs +++ b/osu.Game/Overlays/Mods/AddPresetPopover.cs @@ -74,11 +74,12 @@ namespace osu.Game.Overlays.Mods Direction = FillDirection.Vertical, Children = new Drawable[] { - createButton = new ShearedButton(content_width) + createButton = new ShearedButton { // todo: for some very odd reason, this needs to be anchored to topright for the fill flow to be correctly sized to the AABB of the sheared button Anchor = Anchor.TopRight, Origin = Anchor.TopRight, + Width = content_width, Text = ModSelectOverlayStrings.AddPreset, Action = createPreset } diff --git a/osu.Game/Overlays/Mods/DeselectAllModsButton.cs b/osu.Game/Overlays/Mods/DeselectAllModsButton.cs index 0e60fc3414..9b8ae1e3b6 100644 --- a/osu.Game/Overlays/Mods/DeselectAllModsButton.cs +++ b/osu.Game/Overlays/Mods/DeselectAllModsButton.cs @@ -15,8 +15,9 @@ namespace osu.Game.Overlays.Mods private readonly Bindable> selectedMods = new Bindable>(); public DeselectAllModsButton(ModSelectOverlay modSelectOverlay) - : base(ModSelectOverlay.BUTTON_WIDTH) { + Width = ModSelectOverlay.BUTTON_WIDTH; + Text = CommonStrings.DeselectAll; Action = modSelectOverlay.DeselectAll; diff --git a/osu.Game/Overlays/Mods/EditPresetPopover.cs b/osu.Game/Overlays/Mods/EditPresetPopover.cs index eb128c7792..820ffad265 100644 --- a/osu.Game/Overlays/Mods/EditPresetPopover.cs +++ b/osu.Game/Overlays/Mods/EditPresetPopover.cs @@ -114,22 +114,24 @@ namespace osu.Game.Overlays.Mods Direction = FillDirection.Vertical, Children = new Drawable[] { - useCurrentModsButton = new ShearedButton(content_width) + useCurrentModsButton = new ShearedButton { // todo: for some very odd reason, this needs to be anchored to topright for the fill flow to be correctly sized to the AABB of the sheared button Anchor = Anchor.TopRight, Origin = Anchor.TopRight, + Width = content_width, Text = ModSelectOverlayStrings.UseCurrentMods, DarkerColour = colours.Blue1, LighterColour = colours.Blue0, TextColour = colourProvider.Background6, Action = useCurrentMods, }, - saveButton = new ShearedButton(content_width) + saveButton = new ShearedButton { // todo: for some very odd reason, this needs to be anchored to topright for the fill flow to be correctly sized to the AABB of the sheared button Anchor = Anchor.TopRight, Origin = Anchor.TopRight, + Width = content_width, Text = Resources.Localisation.Web.CommonStrings.ButtonsSave, DarkerColour = colours.Orange1, LighterColour = colours.Orange0, diff --git a/osu.Game/Overlays/Mods/SelectAllModsButton.cs b/osu.Game/Overlays/Mods/SelectAllModsButton.cs index 1da762d164..2fb72ef2c4 100644 --- a/osu.Game/Overlays/Mods/SelectAllModsButton.cs +++ b/osu.Game/Overlays/Mods/SelectAllModsButton.cs @@ -18,8 +18,9 @@ namespace osu.Game.Overlays.Mods private readonly Bindable searchTerm = new Bindable(); public SelectAllModsButton(FreeModSelectOverlay modSelectOverlay) - : base(ModSelectOverlay.BUTTON_WIDTH) { + Width = ModSelectOverlay.BUTTON_WIDTH; + Text = CommonStrings.SelectAll; Action = modSelectOverlay.SelectAll; diff --git a/osu.Game/Overlays/WizardOverlay.cs b/osu.Game/Overlays/WizardOverlay.cs index 3cc403dbff..a75f1aff3c 100644 --- a/osu.Game/Overlays/WizardOverlay.cs +++ b/osu.Game/Overlays/WizardOverlay.cs @@ -245,10 +245,9 @@ namespace osu.Game.Overlays Padding = new MarginPadding { Right = OsuGame.SCREEN_EDGE_MARGIN }; - InternalChild = NextButton = new ShearedButton(0) + InternalChild = NextButton = new ShearedButton { RelativeSizeAxes = Axes.X, - Width = 1, Text = FirstRunSetupOverlayStrings.GetStarted, DarkerColour = colourProvider.Colour3, LighterColour = colourProvider.Colour2, diff --git a/osu.Game/Screens/Footer/ScreenBackButton.cs b/osu.Game/Screens/Footer/ScreenBackButton.cs index 481192088c..37d4260d18 100644 --- a/osu.Game/Screens/Footer/ScreenBackButton.cs +++ b/osu.Game/Screens/Footer/ScreenBackButton.cs @@ -32,14 +32,11 @@ namespace osu.Game.Screens.Footer return inputRectangle.Contains(ToLocalSpace(screenSpacePos)); } - public ScreenBackButton() - : base(BUTTON_WIDTH) - { - } - [BackgroundDependencyLoader] private void load() { + Width = BUTTON_WIDTH; + ButtonContent.Child = new FillFlowContainer { X = -10f, diff --git a/osu.Game/Screens/OnlinePlay/Matchmaking/Queue/ScreenQueue.cs b/osu.Game/Screens/OnlinePlay/Matchmaking/Queue/ScreenQueue.cs index da4b3e9602..87d50213ee 100644 --- a/osu.Game/Screens/OnlinePlay/Matchmaking/Queue/ScreenQueue.cs +++ b/osu.Game/Screens/OnlinePlay/Matchmaking/Queue/ScreenQueue.cs @@ -269,12 +269,13 @@ namespace osu.Game.Screens.OnlinePlay.Matchmaking.Queue AvailablePools = { BindTarget = availablePools }, SelectedPool = { BindTarget = selectedPool } }, - new BeginQueueingButton(200) + new BeginQueueingButton { DarkerColour = colours.Blue2, LighterColour = colours.Blue1, Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, + Width = 200, SelectedPool = { BindTarget = selectedPool }, Action = () => { @@ -308,12 +309,13 @@ namespace osu.Game.Screens.OnlinePlay.Matchmaking.Queue { State = { Value = Visibility.Visible }, }, - new ShearedButton(200) + new ShearedButton { DarkerColour = colours.Red3, LighterColour = colours.Red4, Anchor = Anchor.Centre, Origin = Anchor.Centre, + Width = 200, Text = "Stop queueing", Action = () => client.MatchmakingLeaveQueue().FireAndForget() } @@ -430,11 +432,6 @@ namespace osu.Game.Screens.OnlinePlay.Matchmaking.Queue { public readonly IBindable SelectedPool = new Bindable(); - public BeginQueueingButton(float? width = null) - : base(width) - { - } - protected override void LoadComplete() { base.LoadComplete(); @@ -445,11 +442,6 @@ namespace osu.Game.Screens.OnlinePlay.Matchmaking.Queue private partial class SelectionButton : ShearedButton, IKeyBindingHandler { - protected SelectionButton(float? width = null, float height = DEFAULT_HEIGHT) - : base(width, height) - { - } - public bool OnPressed(KeyBindingPressEvent e) { if (e.Action == GlobalAction.Select && !e.Repeat) diff --git a/osu.Game/Screens/OnlinePlay/Playlists/AddToPlaylistFooterButton.cs b/osu.Game/Screens/OnlinePlay/Playlists/AddToPlaylistFooterButton.cs index 1d8dcf37ab..622b87503f 100644 --- a/osu.Game/Screens/OnlinePlay/Playlists/AddToPlaylistFooterButton.cs +++ b/osu.Game/Screens/OnlinePlay/Playlists/AddToPlaylistFooterButton.cs @@ -13,14 +13,11 @@ namespace osu.Game.Screens.OnlinePlay.Playlists { public partial class AddToPlaylistFooterButton : ShearedButton { - public AddToPlaylistFooterButton() - : base(width: 220) - { - } - [BackgroundDependencyLoader] private void load(OsuColour colours) { + Width = 220; + DarkerColour = colours.Blue3; LighterColour = colours.Blue1; diff --git a/osu.Game/Screens/Select/BeatmapDetailsArea.Header.cs b/osu.Game/Screens/Select/BeatmapDetailsArea.Header.cs index fd6437d1a9..b20254a35c 100644 --- a/osu.Game/Screens/Select/BeatmapDetailsArea.Header.cs +++ b/osu.Game/Screens/Select/BeatmapDetailsArea.Header.cs @@ -76,6 +76,7 @@ namespace osu.Game.Screens.Select { Anchor = Anchor.CentreRight, Origin = Anchor.CentreRight, + AutoSizeAxes = Axes.X, Text = UserInterfaceStrings.SelectedMods, Height = 30f, // Eyeballed to make spacing match. Because shear is silly and implemented in different ways between dropdown and button. diff --git a/osu.Game/Screens/Select/FilterControl.ScopedBeatmapSetDisplay.cs b/osu.Game/Screens/Select/FilterControl.ScopedBeatmapSetDisplay.cs index 78dfb163ad..040081605f 100644 --- a/osu.Game/Screens/Select/FilterControl.ScopedBeatmapSetDisplay.cs +++ b/osu.Game/Screens/Select/FilterControl.ScopedBeatmapSetDisplay.cs @@ -73,10 +73,11 @@ namespace osu.Game.Screens.Select Colour = colourProvider.Background6, Padding = new MarginPadding { Right = 80, Vertical = 5 } }, - new ShearedButton(80) + new ShearedButton { Anchor = Anchor.CentreRight, Origin = Anchor.CentreRight, + Width = 80, Text = CommonStrings.Back, RelativeSizeAxes = Axes.Y, Height = 1, diff --git a/osu.Game/Screens/Select/FilterControl.cs b/osu.Game/Screens/Select/FilterControl.cs index 7473a21531..4867e7de8c 100644 --- a/osu.Game/Screens/Select/FilterControl.cs +++ b/osu.Game/Screens/Select/FilterControl.cs @@ -151,6 +151,7 @@ namespace osu.Game.Screens.Select { Anchor = Anchor.Centre, Origin = Anchor.Centre, + AutoSizeAxes = Axes.X, Text = UserInterfaceStrings.ShowConverts, Height = 30f, },