diff --git a/osu-framework b/osu-framework index 743ad1129e..2958d6fda1 160000 --- a/osu-framework +++ b/osu-framework @@ -1 +1 @@ -Subproject commit 743ad1129edbc1cb8faa14ebc9a6d1846780795c +Subproject commit 2958d6fda1be252a0f479609090e72814b177c91 diff --git a/osu.Game/Graphics/UserInterface/OsuContextMenu.cs b/osu.Game/Graphics/UserInterface/OsuContextMenu.cs index 9bc2f381c0..4ec349edd7 100644 --- a/osu.Game/Graphics/UserInterface/OsuContextMenu.cs +++ b/osu.Game/Graphics/UserInterface/OsuContextMenu.cs @@ -8,6 +8,7 @@ using osu.Framework.Audio.Sample; using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.UserInterface; using osu.Framework.Input; using osu.Game.Graphics.Sprites; @@ -54,8 +55,7 @@ namespace osu.Game.Graphics.UserInterface private SampleChannel sampleClick; private SampleChannel sampleHover; - private OsuSpriteText text; - private OsuSpriteText textBold; + private TextContainer text; public DrawableOsuContextMenuItem(Menu menu, TItem item) : base(item) @@ -79,13 +79,13 @@ namespace osu.Game.Graphics.UserInterface switch (Item.Type) { case MenuItemType.Standard: - textBold.Colour = text.Colour = Color4.White; + text.Colour = Color4.White; break; case MenuItemType.Destructive: - textBold.Colour = text.Colour = Color4.Red; + text.Colour = Color4.Red; break; case MenuItemType.Highlighted: - textBold.Colour = text.Colour = OsuColour.FromHex(@"ffcc22"); + text.Colour = OsuColour.FromHex(@"ffcc22"); break; } } @@ -93,15 +93,15 @@ namespace osu.Game.Graphics.UserInterface protected override bool OnHover(InputState state) { sampleHover.Play(); - textBold.FadeIn(transition_length, Easing.OutQuint); - text.FadeOut(transition_length, Easing.OutQuint); + text.BoldText.FadeIn(transition_length, Easing.OutQuint); + text.NormalText.FadeOut(transition_length, Easing.OutQuint); return base.OnHover(state); } protected override void OnHoverLost(InputState state) { - textBold.FadeOut(transition_length, Easing.OutQuint); - text.FadeIn(transition_length, Easing.OutQuint); + text.BoldText.FadeOut(transition_length, Easing.OutQuint); + text.NormalText.FadeIn(transition_length, Easing.OutQuint); base.OnHoverLost(state); } @@ -111,44 +111,51 @@ namespace osu.Game.Graphics.UserInterface return base.OnClick(state); } - protected override Drawable CreateContent() + protected override Drawable CreateContent() => text = new TextContainer(); + + private class TextContainer : Container, IHasText { - var container = new Container + public string Text { - AutoSizeAxes = Axes.Both, - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, + get { return NormalText.Text; } + set + { + NormalText.Text = value; + BoldText.Text = value; + } + } + + public readonly SpriteText NormalText; + public readonly SpriteText BoldText; + + public TextContainer() + { + Anchor = Anchor.CentreLeft; + Origin = Anchor.CentreLeft; + + AutoSizeAxes = Axes.Both; + Children = new Drawable[] { - text = new OsuSpriteText + NormalText = new OsuSpriteText { Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, TextSize = text_size, - Text = Item.Text, Margin = new MarginPadding { Horizontal = margin_horizontal, Vertical = MARGIN_VERTICAL }, }, - textBold = new OsuSpriteText + BoldText = new OsuSpriteText { AlwaysPresent = true, Alpha = 0, Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, TextSize = text_size, - Text = Item.Text, Font = @"Exo2.0-Bold", Margin = new MarginPadding { Horizontal = margin_horizontal, Vertical = MARGIN_VERTICAL }, } - } - }; - - Item.Text.ValueChanged += newText => - { - text.Text = newText; - textBold.Text = newText; - }; - - return container; + }; + } } } #endregion diff --git a/osu.Game/Graphics/UserInterface/OsuDropdown.cs b/osu.Game/Graphics/UserInterface/OsuDropdown.cs index 8984ba1eba..d67a995e67 100644 --- a/osu.Game/Graphics/UserInterface/OsuDropdown.cs +++ b/osu.Game/Graphics/UserInterface/OsuDropdown.cs @@ -81,8 +81,7 @@ namespace osu.Game.Graphics.UserInterface { public readonly Bindable AccentColour = new Bindable(); - private SpriteIcon chevron; - protected OsuSpriteText Label; + private TextContainer textContainer; private Color4 nonAccentHoverColour; private Color4 nonAccentSelectedColour; @@ -117,19 +116,32 @@ namespace osu.Game.Graphics.UserInterface protected override void UpdateForegroundColour() { base.UpdateForegroundColour(); - chevron.Alpha = IsHovered ? 1 : 0; + + textContainer.Chevron.Alpha = IsHovered ? 1 : 0; } - protected override Drawable CreateContent() + protected override Drawable CreateContent() => textContainer = new TextContainer(); + + protected class TextContainer : FillFlowContainer, IHasText { - var container = new FillFlowContainer + public string Text { - Direction = FillDirection.Horizontal, - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, + get { return Label.Text; } + set { Label.Text = value; } + } + + public readonly OsuSpriteText Label; + public readonly SpriteIcon Chevron; + + public TextContainer() + { + RelativeSizeAxes = Axes.X; + AutoSizeAxes = Axes.Y; + Direction = FillDirection.Horizontal; + Children = new Drawable[] { - chevron = new SpriteIcon + Chevron = new SpriteIcon { AlwaysPresent = true, Icon = FontAwesome.fa_chevron_right, @@ -142,15 +154,11 @@ namespace osu.Game.Graphics.UserInterface }, Label = new OsuSpriteText { - Text = Item.Text, Origin = Anchor.CentreLeft, Anchor = Anchor.CentreLeft, } - } - }; - - Item.Text.ValueChanged += newText => Label.Text = newText; - return container; + }; + } } } #endregion diff --git a/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs b/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs index ad7c7cf092..609b4b1e16 100644 --- a/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs @@ -316,9 +316,13 @@ namespace osu.Game.Overlays.Settings.Sections.General : base(item) { Foreground.Padding = new MarginPadding { Top = 5, Bottom = 5, Left = 10, Right = 5 }; - Label.Margin = new MarginPadding { Left = UserDropdownHeader.LABEL_LEFT_MARGIN - 11 }; CornerRadius = 5; } + + protected override Drawable CreateContent() => new TextContainer + { + Label = { Margin = new MarginPadding { Left = UserDropdownHeader.LABEL_LEFT_MARGIN - 11 } } + }; } }