diff --git a/osu.Game/Input/ConfineMouseTracker.cs b/osu.Game/Input/ConfineMouseTracker.cs
index 653622e881..3b54c03bb0 100644
--- a/osu.Game/Input/ConfineMouseTracker.cs
+++ b/osu.Game/Input/ConfineMouseTracker.cs
@@ -8,13 +8,12 @@ using osu.Framework.Graphics;
using osu.Framework.Input;
using osu.Game.Configuration;
using osu.Game.Overlays;
-using osu.Game.Screens.Play;
namespace osu.Game.Input
{
///
/// Connects with ,
- /// while optionally binding an mode, usually that of the current .
+ /// while binding .
/// It is assumed that while overlay activation is , we should also confine the
/// mouse cursor if it has been requested with .
///
@@ -22,22 +21,16 @@ namespace osu.Game.Input
{
private Bindable frameworkConfineMode;
private Bindable osuConfineMode;
-
- ///
- /// The bindable used to indicate whether gameplay is active.
- /// Should be bound to the corresponding bindable of the current .
- /// Defaults to to assume that all other screens are considered "not gameplay".
- ///
- public IBindable OverlayActivationMode { get; } = new Bindable(OverlayActivation.All);
+ private IBindable overlayActivationMode;
[BackgroundDependencyLoader]
- private void load(FrameworkConfigManager frameworkConfigManager, OsuConfigManager osuConfigManager)
+ private void load(OsuGame game, FrameworkConfigManager frameworkConfigManager, OsuConfigManager osuConfigManager)
{
frameworkConfineMode = frameworkConfigManager.GetBindable(FrameworkSetting.ConfineMouseMode);
osuConfineMode = osuConfigManager.GetBindable(OsuSetting.ConfineMouseMode);
osuConfineMode.ValueChanged += _ => updateConfineMode();
-
- OverlayActivationMode.BindValueChanged(_ => updateConfineMode(), true);
+ overlayActivationMode = game.OverlayActivationMode.GetBoundCopy();
+ overlayActivationMode.BindValueChanged(_ => updateConfineMode(), true);
}
private void updateConfineMode()
@@ -53,7 +46,7 @@ namespace osu.Game.Input
break;
case OsuConfineMouseMode.WhenOverlaysDisabled:
- frameworkConfineMode.Value = OverlayActivationMode.Value == OverlayActivation.Disabled ? ConfineMouseMode.Always : ConfineMouseMode.Never;
+ frameworkConfineMode.Value = overlayActivationMode?.Value == OverlayActivation.Disabled ? ConfineMouseMode.Always : ConfineMouseMode.Never;
break;
case OsuConfineMouseMode.Always:
diff --git a/osu.Game/Input/OsuConfineMouseMode.cs b/osu.Game/Input/OsuConfineMouseMode.cs
index 53e352c8bd..e8411a3d9f 100644
--- a/osu.Game/Input/OsuConfineMouseMode.cs
+++ b/osu.Game/Input/OsuConfineMouseMode.cs
@@ -23,7 +23,7 @@ namespace osu.Game.Input
Fullscreen,
///
- /// The mouse cursor will be locked to the window bounds during gameplay,
+ /// The mouse cursor will be locked to the window bounds while overlays are disabled,
/// but may otherwise move freely.
///
[Description("During Gameplay")]
diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs
index de67b2d46d..175722c44e 100644
--- a/osu.Game/Screens/Play/Player.cs
+++ b/osu.Game/Screens/Play/Player.cs
@@ -18,7 +18,6 @@ using osu.Framework.Threading;
using osu.Game.Beatmaps;
using osu.Game.Configuration;
using osu.Game.Graphics.Containers;
-using osu.Game.Input;
using osu.Game.IO.Archives;
using osu.Game.Online.API;
using osu.Game.Overlays;
@@ -67,9 +66,6 @@ namespace osu.Game.Screens.Play
private Bindable mouseWheelDisabled;
- [Resolved(CanBeNull = true)]
- private ConfineMouseTracker confineMouseTracker { get; set; }
-
private readonly Bindable storyboardReplacesBackground = new Bindable();
public int RestartCount;
@@ -229,8 +225,6 @@ namespace osu.Game.Screens.Play
DrawableRuleset.HasReplayLoaded.BindValueChanged(_ => updatePauseOnFocusLostState(), true);
- confineMouseTracker?.OverlayActivationMode.BindTo(OverlayActivationMode);
-
// bind clock into components that require it
DrawableRuleset.IsPaused.BindTo(GameplayClockContainer.IsPaused);