mirror of
https://github.com/osukey/osukey.git
synced 2025-08-08 00:53:56 +09:00
Handle unhover state change better
This commit is contained in:
@ -20,19 +20,41 @@ namespace osu.Game.Graphics.Containers
|
|||||||
|
|
||||||
protected virtual IEnumerable<Drawable> EffectTargets => new[] { Content };
|
protected virtual IEnumerable<Drawable> EffectTargets => new[] { Content };
|
||||||
|
|
||||||
|
public OsuHoverContainer()
|
||||||
|
{
|
||||||
|
Enabled.ValueChanged += e =>
|
||||||
|
{
|
||||||
|
if (!e.NewValue) unhover();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool isHovered;
|
||||||
|
|
||||||
protected override bool OnHover(HoverEvent e)
|
protected override bool OnHover(HoverEvent e)
|
||||||
{
|
{
|
||||||
if (Action != null)
|
if (!Enabled.Value)
|
||||||
EffectTargets.ForEach(d => d.FadeColour(HoverColour, FADE_DURATION, Easing.OutQuint));
|
return false;
|
||||||
|
|
||||||
|
EffectTargets.ForEach(d => d.FadeColour(HoverColour, FADE_DURATION, Easing.OutQuint));
|
||||||
|
isHovered = true;
|
||||||
|
|
||||||
return base.OnHover(e);
|
return base.OnHover(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnHoverLost(HoverLostEvent e)
|
protected override void OnHoverLost(HoverLostEvent e)
|
||||||
{
|
{
|
||||||
EffectTargets.ForEach(d => d.FadeColour(IdleColour, FADE_DURATION, Easing.OutQuint));
|
unhover();
|
||||||
base.OnHoverLost(e);
|
base.OnHoverLost(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void unhover()
|
||||||
|
{
|
||||||
|
if (!isHovered) return;
|
||||||
|
|
||||||
|
isHovered = false;
|
||||||
|
EffectTargets.ForEach(d => d.FadeColour(IdleColour, FADE_DURATION, Easing.OutQuint));
|
||||||
|
}
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load(OsuColour colours)
|
private void load(OsuColour colours)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user