mirror of
https://github.com/ppy/osu.git
synced 2024-12-13 07:43:00 +08:00
Fix global idle state being entered when overlays are visible
This commit is contained in:
parent
e596d4fc10
commit
4c2c7bd937
@ -27,6 +27,11 @@ namespace osu.Game.Input
|
||||
|
||||
private readonly BindableBool isIdle = new BindableBool();
|
||||
|
||||
/// <summary>
|
||||
/// Whether the game can currently enter an idle state.
|
||||
/// </summary>
|
||||
protected virtual bool AllowIdle => true;
|
||||
|
||||
/// <summary>
|
||||
/// Intstantiate a new <see cref="IdleTracker"/>.
|
||||
/// </summary>
|
||||
@ -40,7 +45,7 @@ namespace osu.Game.Input
|
||||
protected override void Update()
|
||||
{
|
||||
base.Update();
|
||||
isIdle.Value = TimeSpentIdle > timeToIdle;
|
||||
isIdle.Value = TimeSpentIdle > timeToIdle && AllowIdle;
|
||||
}
|
||||
|
||||
public bool OnPressed(PlatformAction action) => updateLastInteractionTime();
|
||||
|
@ -187,6 +187,7 @@ namespace osu.Game
|
||||
}
|
||||
|
||||
private ExternalLinkOpener externalLinkOpener;
|
||||
|
||||
public void OpenUrlExternally(string url)
|
||||
{
|
||||
if (url.StartsWith("/"))
|
||||
@ -355,7 +356,7 @@ namespace osu.Game
|
||||
},
|
||||
mainContent = new Container { RelativeSizeAxes = Axes.Both },
|
||||
overlayContent = new Container { RelativeSizeAxes = Axes.Both, Depth = float.MinValue },
|
||||
idleTracker = new IdleTracker(6000)
|
||||
idleTracker = new GameIdleTracker(6000)
|
||||
});
|
||||
|
||||
loadComponentSingleFile(screenStack = new Loader(), d =>
|
||||
@ -423,7 +424,7 @@ namespace osu.Game
|
||||
Depth = -8,
|
||||
}, overlayContent.Add);
|
||||
|
||||
dependencies.Cache(idleTracker);
|
||||
dependencies.CacheAs(idleTracker);
|
||||
dependencies.Cache(settings);
|
||||
dependencies.Cache(onscreenDisplay);
|
||||
dependencies.Cache(social);
|
||||
@ -504,6 +505,16 @@ namespace osu.Game
|
||||
notifications.StateChanged += _ => updateScreenOffset();
|
||||
}
|
||||
|
||||
public class GameIdleTracker : IdleTracker
|
||||
{
|
||||
public GameIdleTracker(int time)
|
||||
: base(time)
|
||||
{
|
||||
}
|
||||
|
||||
protected override bool AllowIdle => GetContainingInputManager().FocusedDrawable == null;
|
||||
}
|
||||
|
||||
private void forwardLoggedErrorsToNotifications()
|
||||
{
|
||||
int recentLogCount = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user