diff --git a/Plugins/Flow.Launcher.Plugin.Program/AddProgramSource.xaml.cs b/Plugins/Flow.Launcher.Plugin.Program/AddProgramSource.xaml.cs
index 1445cdb7b..31d44a6d4 100644
--- a/Plugins/Flow.Launcher.Plugin.Program/AddProgramSource.xaml.cs
+++ b/Plugins/Flow.Launcher.Plugin.Program/AddProgramSource.xaml.cs
@@ -63,7 +63,7 @@ namespace Flow.Launcher.Plugin.Program
}
if (!update)
{
- if (!ProgramSetting.ProgramSettingDisplayList.Any(x => x.UniqueIdentifier.Equals(path, System.StringComparison.InvariantCultureIgnoreCase)))
+ if (!ProgramSetting.ProgramSettingDisplayList.Any(x => x.UniqueIdentifier.Equals(path, System.StringComparison.OrdinalIgnoreCase)))
{
var source = new ProgramSource(path);
modified = true;
@@ -76,7 +76,7 @@ namespace Flow.Launcher.Plugin.Program
modified = _editing.Location != path || _editing.Enabled != Chkbox.IsChecked;
if (modified)
{
- _editing.SetLocation(path);
+ _editing.Location = path;
_editing.Enabled = Chkbox.IsChecked ?? true;
}
}
diff --git a/Plugins/Flow.Launcher.Plugin.Program/Views/Models/ProgramSource.cs b/Plugins/Flow.Launcher.Plugin.Program/Views/Models/ProgramSource.cs
index 6d24d12d5..4282eab06 100644
--- a/Plugins/Flow.Launcher.Plugin.Program/Views/Models/ProgramSource.cs
+++ b/Plugins/Flow.Launcher.Plugin.Program/Views/Models/ProgramSource.cs
@@ -18,7 +18,16 @@ namespace Flow.Launcher.Plugin.Program.Views.Models
{
private string name;
- public string Location { get; private set; }
+ private string loc;
+ public string Location
+ {
+ get => loc;
+ set
+ {
+ loc = value;
+ UniqueIdentifier = value.ToLowerInvariant();
+ }
+ }
public string Name { get => name ?? new DirectoryInfo(Location).Name; set => name = value; }
public bool Enabled { get; set; } = true;
@@ -27,10 +36,17 @@ namespace Flow.Launcher.Plugin.Program.Views.Models
[JsonConstructor]
public ProgramSource(string name, string location, bool enabled, string uniqueIdentifier)
{
- Location = location;
+ loc = location;
this.name = name;
Enabled = enabled;
- UniqueIdentifier = uniqueIdentifier;
+ if (location.Equals(uniqueIdentifier, StringComparison.OrdinalIgnoreCase))
+ {
+ UniqueIdentifier = location.ToLowerInvariant(); // To make sure old config can be reset to case-insensitive
+ }
+ else
+ {
+ UniqueIdentifier = uniqueIdentifier; // For uwp apps
+ }
}
///
@@ -38,24 +54,16 @@ namespace Flow.Launcher.Plugin.Program.Views.Models
///
/// location of program source
/// enabled
- public ProgramSource(string location, bool enabled=true)
+ public ProgramSource(string location, bool enabled = true)
{
- Location = location;
+ loc = location;
Enabled = enabled;
UniqueIdentifier = location.ToLowerInvariant(); // For path comparison
}
- public ProgramSource(ProgramSource source)
- {
- Location = source.Location;
- Name = source.Name;
- Enabled = source.Enabled;
- UniqueIdentifier = source.UniqueIdentifier;
- }
-
public ProgramSource(IProgram source)
{
- Location = source.Location;
+ loc = source.Location;
Name = source.Name;
Enabled = source.Enabled;
UniqueIdentifier = source.UniqueIdentifier;
@@ -75,12 +83,5 @@ namespace Flow.Launcher.Plugin.Program.Views.Models
{
return HashCode.Combine(UniqueIdentifier);
}
-
- public void SetLocation(string value)
- {
- if (Location == value) return;
- Location = value;
- UniqueIdentifier = value.ToLowerInvariant(); // Update
- }
}
}
diff --git a/Plugins/Flow.Launcher.Plugin.Program/Views/ProgramSetting.xaml.cs b/Plugins/Flow.Launcher.Plugin.Program/Views/ProgramSetting.xaml.cs
index 77d29fab1..a7ee299d5 100644
--- a/Plugins/Flow.Launcher.Plugin.Program/Views/ProgramSetting.xaml.cs
+++ b/Plugins/Flow.Launcher.Plugin.Program/Views/ProgramSetting.xaml.cs
@@ -216,7 +216,7 @@ namespace Flow.Launcher.Plugin.Program.Views
foreach (string directory in directories)
{
if (Directory.Exists(directory)
- && !ProgramSettingDisplayList.Any(x => x.UniqueIdentifier.Equals(directory, System.StringComparison.InvariantCultureIgnoreCase)))
+ && !ProgramSettingDisplayList.Any(x => x.UniqueIdentifier.Equals(directory, System.StringComparison.OrdinalIgnoreCase)))
{
var source = new ProgramSource(directory);