Remake OsuTabControl.AccentColour

This commit is contained in:
Andrei Zavatski
2020-01-26 12:57:19 +03:00
parent 6c1fa05804
commit e442e8535b
2 changed files with 15 additions and 10 deletions

View File

@ -21,19 +21,16 @@ namespace osu.Game.Graphics.UserInterface
{ {
public class OsuTabControl<T> : TabControl<T> public class OsuTabControl<T> : TabControl<T>
{ {
protected readonly Bindable<Color4> AccentColourBindable = new Bindable<Color4>(); private Color4 accentColour;
public Color4 AccentColour public Color4 AccentColour
{ {
get => AccentColourBindable.Value; get => accentColour;
set set
{ {
AccentColourBindable.Value = value; accentColour = value;
if (Dropdown is IHasAccentColour dropdown) OnAccentColourChanged(value);
dropdown.AccentColour = value;
foreach (var i in TabContainer.Children.OfType<IHasAccentColour>())
i.AccentColour = value;
} }
} }
@ -93,6 +90,14 @@ namespace osu.Game.Graphics.UserInterface
strip.Width = Interpolation.ValueAt(Math.Clamp(Clock.ElapsedFrameTime, 0, 1000), strip.Width, StripWidth, 0, 500, Easing.OutQuint); strip.Width = Interpolation.ValueAt(Math.Clamp(Clock.ElapsedFrameTime, 0, 1000), strip.Width, StripWidth, 0, 500, Easing.OutQuint);
} }
protected virtual void OnAccentColourChanged(Color4 colour)
{
if (Dropdown is IHasAccentColour dropdown)
dropdown.AccentColour = colour;
foreach (var i in TabContainer.Children.OfType<IHasAccentColour>())
i.AccentColour = colour;
}
public class OsuTabItem : TabItem<T>, IHasAccentColour public class OsuTabItem : TabItem<T>, IHasAccentColour
{ {
protected readonly SpriteText Text; protected readonly SpriteText Text;

View File

@ -36,10 +36,10 @@ namespace osu.Game.Overlays
}); });
} }
protected override void LoadComplete() protected override void OnAccentColourChanged(Color4 colour)
{ {
base.LoadComplete(); base.OnAccentColourChanged(colour);
AccentColourBindable.BindValueChanged(colour => bar.Colour = colour.NewValue, true); bar.Colour = colour;
} }
protected override Dropdown<T> CreateDropdown() => null; protected override Dropdown<T> CreateDropdown() => null;