Fix folders without direct mod children not being set visible in mod selector.

This commit is contained in:
Ottermandias 2021-08-12 11:42:04 +02:00
parent 61acc3861b
commit a9d47594b5
2 changed files with 14 additions and 3 deletions

View file

@ -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() private void UpdateFolders()
{ {
_visibleFolders.Clear(); _visibleFolders.Clear();
@ -64,7 +73,7 @@ namespace Penumbra.UI
{ {
if( _visibleMods[ i ].visible ) 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; ret.Item1 = true;
_visibleFolders[ mod.Data.SortOrder.ParentFolder ] = ( true, true ); SetFolderAndParentsVisible( mod.Data.SortOrder.ParentFolder );
return ret; return ret;
} }
} }

View file

@ -96,7 +96,9 @@ namespace Penumbra.UI
if( ImGui.Button( ButtonYesDelete, buttonSize ) ) if( ImGui.Button( ButtonYesDelete, buttonSize ) )
{ {
ImGui.CloseCurrentPopup(); ImGui.CloseCurrentPopup();
_modManager.DeleteMod( Mod.Data.BasePath ); var mod = Mod;
Cache.RemoveMod( mod );
_modManager.DeleteMod( mod.Data.BasePath );
ClearSelection(); ClearSelection();
} }