diff --git a/osu.Game/Localisation/MouseSettingsStrings.cs b/osu.Game/Localisation/MouseSettingsStrings.cs
index 9b1f7fe4c5..5e894c4e0b 100644
--- a/osu.Game/Localisation/MouseSettingsStrings.cs
+++ b/osu.Game/Localisation/MouseSettingsStrings.cs
@@ -54,6 +54,11 @@ namespace osu.Game.Localisation
///
public static LocalisableString CursorSensitivity => new TranslatableString(getKey(@"cursor_sensitivity"), @"Cursor sensitivity");
+ ///
+ /// "This setting has known issues on your platform. If you encounter problems, it is recommended to adjust sensitivity externally and keep this disabled for now."
+ ///
+ public static LocalisableString HighPrecisionPlatformWarning => new TranslatableString(getKey(@"high_precision_platform_warning"), @"This setting has known issues on your platform. If you encounter problems, it is recommended to adjust sensitivity externally and keep this disabled for now.");
+
private static string getKey(string key) => $@"{prefix}:{key}";
}
}
diff --git a/osu.Game/Overlays/Settings/Sections/Input/MouseSettings.cs b/osu.Game/Overlays/Settings/Sections/Input/MouseSettings.cs
index 753096a207..a4da17c5cd 100644
--- a/osu.Game/Overlays/Settings/Sections/Input/MouseSettings.cs
+++ b/osu.Game/Overlays/Settings/Sections/Input/MouseSettings.cs
@@ -1,6 +1,7 @@
// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
+using osu.Framework;
using osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Framework.Configuration;
@@ -28,6 +29,8 @@ namespace osu.Game.Overlays.Settings.Sections.Input
private SettingsEnumDropdown confineMouseModeSetting;
private Bindable relativeMode;
+ private SettingsCheckbox highPrecisionMouse;
+
public MouseSettings(MouseHandler mouseHandler)
{
this.mouseHandler = mouseHandler;
@@ -45,7 +48,7 @@ namespace osu.Game.Overlays.Settings.Sections.Input
Children = new Drawable[]
{
- new SettingsCheckbox
+ highPrecisionMouse = new SettingsCheckbox
{
LabelText = MouseSettingsStrings.HighPrecisionMouse,
TooltipText = MouseSettingsStrings.HighPrecisionMouseTooltip,
@@ -107,6 +110,17 @@ namespace osu.Game.Overlays.Settings.Sections.Input
confineMouseModeSetting.TooltipText = string.Empty;
}
}, true);
+
+ highPrecisionMouse.Current.BindValueChanged(highPrecision =>
+ {
+ if (RuntimeInfo.OS != RuntimeInfo.Platform.Windows)
+ {
+ if (highPrecision.NewValue)
+ highPrecisionMouse.WarningText = MouseSettingsStrings.HighPrecisionPlatformWarning;
+ else
+ highPrecisionMouse.WarningText = null;
+ }
+ }, true);
}
private class SensitivitySetting : SettingsSlider
diff --git a/osu.Game/Overlays/Settings/SettingsItem.cs b/osu.Game/Overlays/Settings/SettingsItem.cs
index c60ad020f0..bd17c02af9 100644
--- a/osu.Game/Overlays/Settings/SettingsItem.cs
+++ b/osu.Game/Overlays/Settings/SettingsItem.cs
@@ -61,12 +61,17 @@ namespace osu.Game.Overlays.Settings
/// Text to be displayed at the bottom of this .
/// Generally used to recommend the user change their setting as the current one is considered sub-optimal.
///
- public string WarningText
+ public LocalisableString? WarningText
{
set
{
+ bool hasValue = string.IsNullOrWhiteSpace(value.ToString());
+
if (warningText == null)
{
+ if (!hasValue)
+ return;
+
// construct lazily for cases where the label is not needed (may be provided by the Control).
FlowContent.Add(warningText = new OsuTextFlowContainer
{
@@ -77,8 +82,8 @@ namespace osu.Game.Overlays.Settings
});
}
- warningText.Alpha = string.IsNullOrWhiteSpace(value) ? 0 : 1;
- warningText.Text = value;
+ warningText.Alpha = hasValue ? 0 : 1;
+ warningText.Text = value.ToString(); // TODO: Remove ToString() call after TextFlowContainer supports localisation (see https://github.com/ppy/osu-framework/issues/4636).
}
}