diff --git a/Luna b/Luna index 616d66b1..59967db0 160000 --- a/Luna +++ b/Luna @@ -1 +1 @@ -Subproject commit 616d66b1d384588c23a3b5725ad1330037ce6987 +Subproject commit 59967db0b6fba6e85d04d91e91ed07a35cb42d69 diff --git a/Penumbra/Mods/Manager/ModFileSystem.cs b/Penumbra/Mods/Manager/ModFileSystem.cs index 4528b9fc..8c88bd70 100644 --- a/Penumbra/Mods/Manager/ModFileSystem.cs +++ b/Penumbra/Mods/Manager/ModFileSystem.cs @@ -72,8 +72,17 @@ public sealed class ModFileSystem : BaseFileSystem, IDisposable, IRequiredServic Selection.Select(data); break; case ModPathChangeType.Deleted: - if (arguments.Mod.Node is not null) - Delete(arguments.Mod.Node); + if (arguments.Mod.Node is { } node) + { + // Unselect all because of event spaghetti. + // If two nodes are selected and one is deleted, the remaining one + // will try to fetch settings down the line and possibly break. + // Untangling the events is hard. + if (node.Selected) + Selection.UnselectAll(); + Delete(node); + } + break; case ModPathChangeType.Reloaded: // Nothing