diff --git a/Penumbra/UI/MenuTabs/TabInstalled/ModListCache.cs b/Penumbra/UI/MenuTabs/TabInstalled/ModListCache.cs index 2b19e36f..55dada0d 100644 --- a/Penumbra/UI/MenuTabs/TabInstalled/ModListCache.cs +++ b/Penumbra/UI/MenuTabs/TabInstalled/ModListCache.cs @@ -56,6 +56,15 @@ namespace Penumbra.UI } } + private void SetFolderAndParentsVisible( ModFolder? folder ) + { + while( folder != null && (!_visibleFolders.TryGetValue(folder, out var state) || !state.visible) ) + { + _visibleFolders[ folder ] = ( true, true ); + folder = folder.Parent; + } + } + private void UpdateFolders() { _visibleFolders.Clear(); @@ -64,7 +73,7 @@ namespace Penumbra.UI { if( _visibleMods[ i ].visible ) { - _visibleFolders[ _modsInOrder[ i ].Data.SortOrder.ParentFolder ] = ( true, true ); + SetFolderAndParentsVisible( _modsInOrder[ i ].Data.SortOrder.ParentFolder ); } } } @@ -255,7 +264,7 @@ namespace Penumbra.UI } ret.Item1 = true; - _visibleFolders[ mod.Data.SortOrder.ParentFolder ] = ( true, true ); + SetFolderAndParentsVisible( mod.Data.SortOrder.ParentFolder ); return ret; } } diff --git a/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledSelector.cs b/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledSelector.cs index aaf39643..f7d5a0ba 100644 --- a/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledSelector.cs +++ b/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledSelector.cs @@ -96,7 +96,9 @@ namespace Penumbra.UI if( ImGui.Button( ButtonYesDelete, buttonSize ) ) { ImGui.CloseCurrentPopup(); - _modManager.DeleteMod( Mod.Data.BasePath ); + var mod = Mod; + Cache.RemoveMod( mod ); + _modManager.DeleteMod( mod.Data.BasePath ); ClearSelection(); }