diff --git a/Intersect.Client.Core/Interface/Shared/SettingsWindow.cs b/Intersect.Client.Core/Interface/Shared/SettingsWindow.cs
index e727be87ea..03dc7d6f83 100644
--- a/Intersect.Client.Core/Interface/Shared/SettingsWindow.cs
+++ b/Intersect.Client.Core/Interface/Shared/SettingsWindow.cs
@@ -418,7 +418,6 @@ public SettingsWindow(Base parent) : base(parent: parent, title: Strings.Setting
_worldScale = new LabeledSlider(parent: _videoContainer, name: nameof(_worldScale))
{
Dock = Pos.Top,
- IsDisabled = !Options.IsLoaded,
Font = _defaultFont,
Label = Strings.Settings.WorldScale,
Orientation = Orientation.LeftToRight,
@@ -556,6 +555,13 @@ protected override void EnsureInitialized()
LoadJsonUi(stage: UI.Shared, resolution: Graphics.Renderer?.GetResolutionString());
}
+ protected override void OnJsonReloaded()
+ {
+ base.OnJsonReloaded();
+
+ UpdateWorldScaleControls();
+ }
+
public override bool IsBlockingInput => _keybindingEditBtn is not null;
private BottomBarItems CreateBottomBar(Base parent)
diff --git a/Intersect.Client.Framework/Gwen/Control/Base.cs b/Intersect.Client.Framework/Gwen/Control/Base.cs
index b9e0a91048..85c1fd7bbf 100644
--- a/Intersect.Client.Framework/Gwen/Control/Base.cs
+++ b/Intersect.Client.Framework/Gwen/Control/Base.cs
@@ -759,7 +759,12 @@ public object? UserData
public bool IsDisabled
{
get => (_inheritParentEnablementProperties && Parent != default) ? Parent.IsDisabled : _disabled;
- set => SetAndDoIfChanged(ref _disabled, value, Invalidate);
+ set => SetAndDoIfChanged(ref _disabled, value, OnDisabledChanged);
+ }
+
+ protected virtual void OnDisabledChanged(bool oldValue, bool newValue)
+ {
+ Invalidate();
}
///
@@ -1293,6 +1298,7 @@ public void LoadJsonUi(GameContentManager.UI stage, string? resolution = default
{
LoadJson(obj, true);
ProcessAlignments();
+ OnJsonReloaded();
}
}
catch (Exception exception)
@@ -1309,6 +1315,11 @@ public void LoadJsonUi(GameContentManager.UI stage, string? resolution = default
});
}
+ protected virtual void OnJsonReloaded()
+ {
+
+ }
+
public virtual void LoadJson(JToken token, bool isRoot = default)
{
if (token is not JObject obj)
@@ -4549,6 +4560,4 @@ protected bool SetAndDoIfChanged(
valueChangeHandler(oldValue, value);
return true;
}
-}
-
-public delegate void ValueChangeHandler(TValue oldValue, TValue newValue);
+}
\ No newline at end of file
diff --git a/Intersect.Client.Framework/Gwen/Control/LabeledSlider.cs b/Intersect.Client.Framework/Gwen/Control/LabeledSlider.cs
index e57a18a381..c3a8333239 100644
--- a/Intersect.Client.Framework/Gwen/Control/LabeledSlider.cs
+++ b/Intersect.Client.Framework/Gwen/Control/LabeledSlider.cs
@@ -272,6 +272,11 @@ public string? ValueFormatString
///
public event GwenEventHandler>? ValueChanged;
+ protected override void OnDisabledChanged(bool oldValue, bool newValue)
+ {
+ base.OnDisabledChanged(oldValue, newValue);
+ }
+
protected override void Layout(Skin.Base skin)
{
if (_recomputeValueMinimumSize)
diff --git a/Intersect.Client.Framework/Gwen/Control/ValueChangeHandler.cs b/Intersect.Client.Framework/Gwen/Control/ValueChangeHandler.cs
new file mode 100644
index 0000000000..ebd1261752
--- /dev/null
+++ b/Intersect.Client.Framework/Gwen/Control/ValueChangeHandler.cs
@@ -0,0 +1,3 @@
+namespace Intersect.Client.Framework.Gwen.Control;
+
+public delegate void ValueChangeHandler(TValue oldValue, TValue newValue);
\ No newline at end of file