aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx/Ui/Windows/SettingsWindow.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx/Ui/Windows/SettingsWindow.cs')
-rw-r--r--Ryujinx/Ui/Windows/SettingsWindow.cs32
1 files changed, 21 insertions, 11 deletions
diff --git a/Ryujinx/Ui/Windows/SettingsWindow.cs b/Ryujinx/Ui/Windows/SettingsWindow.cs
index fc3373db..c07ad115 100644
--- a/Ryujinx/Ui/Windows/SettingsWindow.cs
+++ b/Ryujinx/Ui/Windows/SettingsWindow.cs
@@ -34,6 +34,7 @@ namespace Ryujinx.Ui.Windows
private long _systemTimeOffset;
private float _previousVolumeLevel;
+ private bool _directoryChanged = false;
#pragma warning disable CS0649, IDE0044
[GUI] CheckButton _traceLogToggle;
@@ -501,14 +502,22 @@ namespace Ryujinx.Ui.Windows
private void SaveSettings()
{
- List<string> gameDirs = new List<string>();
-
- _gameDirsBoxStore.GetIterFirst(out TreeIter treeIter);
- for (int i = 0; i < _gameDirsBoxStore.IterNChildren(); i++)
+ if (_directoryChanged)
{
- gameDirs.Add((string)_gameDirsBoxStore.GetValue(treeIter, 0));
+ List<string> gameDirs = new List<string>();
+
+ _gameDirsBoxStore.GetIterFirst(out TreeIter treeIter);
+
+ for (int i = 0; i < _gameDirsBoxStore.IterNChildren(); i++)
+ {
+ gameDirs.Add((string)_gameDirsBoxStore.GetValue(treeIter, 0));
+
+ _gameDirsBoxStore.IterNext(ref treeIter);
+ }
+
+ ConfigurationState.Instance.Ui.GameDirs.Value = gameDirs;
- _gameDirsBoxStore.IterNext(ref treeIter);
+ _directoryChanged = false;
}
if (!float.TryParse(_resScaleText.Buffer.Text, out float resScaleCustom) || resScaleCustom <= 0.0f)
@@ -571,7 +580,6 @@ namespace Ryujinx.Ui.Windows
ConfigurationState.Instance.System.SystemTimeOffset.Value = _systemTimeOffset;
ConfigurationState.Instance.Ui.CustomThemePath.Value = _custThemePath.Buffer.Text;
ConfigurationState.Instance.Graphics.ShadersDumpPath.Value = _graphicsShadersDumpPath.Buffer.Text;
- ConfigurationState.Instance.Ui.GameDirs.Value = gameDirs;
ConfigurationState.Instance.System.FsGlobalAccessLogMode.Value = (int)_fsLogSpinAdjustment.Value;
ConfigurationState.Instance.Graphics.MaxAnisotropy.Value = float.Parse(_anisotropy.ActiveId, CultureInfo.InvariantCulture);
ConfigurationState.Instance.Graphics.AspectRatio.Value = Enum.Parse<AspectRatio>(_aspectRatio.ActiveId);
@@ -655,27 +663,27 @@ namespace Ryujinx.Ui.Windows
if (fileChooser.Run() == (int)ResponseType.Accept)
{
+ _directoryChanged = false;
foreach (string directory in fileChooser.Filenames)
{
- bool directoryAdded = false;
-
if (_gameDirsBoxStore.GetIterFirst(out TreeIter treeIter))
{
do
{
if (directory.Equals((string)_gameDirsBoxStore.GetValue(treeIter, 0)))
{
- directoryAdded = true;
break;
}
} while(_gameDirsBoxStore.IterNext(ref treeIter));
}
- if (!directoryAdded)
+ if (!_directoryChanged)
{
_gameDirsBoxStore.AppendValues(directory);
}
}
+
+ _directoryChanged = true;
}
fileChooser.Dispose();
@@ -693,6 +701,8 @@ namespace Ryujinx.Ui.Windows
if (selection.GetSelected(out TreeIter treeIter))
{
_gameDirsBoxStore.Remove(ref treeIter);
+
+ _directoryChanged = true;
}
((ToggleButton)sender).SetStateFlags(StateFlags.Normal, true);