mirror of
https://github.com/xivdev/Penumbra.git
synced 2025-12-12 10:17:22 +01:00
Update ModSelector to reselect a mod on update instead of directly in most cases.
This commit is contained in:
parent
238a4b0cef
commit
9d51b3d6f1
5 changed files with 22 additions and 16 deletions
|
|
@ -144,7 +144,7 @@ namespace Penumbra.UI
|
|||
_selector.Cache.TriggerListReset();
|
||||
if( _selector.Mod != null )
|
||||
{
|
||||
_selector.SelectModByDir( _selector.Mod.Data.BasePath.Name );
|
||||
_selector.SelectModOnUpdate( _selector.Mod.Data.BasePath.Name );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ namespace Penumbra.UI
|
|||
_base.ReloadMods();
|
||||
if( directory != null )
|
||||
{
|
||||
_base._menu.InstalledTab.Selector.SelectModByDir( directory.Name );
|
||||
_base._menu.InstalledTab.Selector.SelectModOnUpdate( directory.Name );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -215,7 +215,7 @@ namespace Penumbra.UI
|
|||
var mod = kv.Key;
|
||||
if( ImGui.Selectable( mod.Data.Meta.Name ) )
|
||||
{
|
||||
_selector.SelectModByName( mod.Data.Meta.Name );
|
||||
_selector.SelectModByDir( mod.Data.BasePath.Name );
|
||||
}
|
||||
|
||||
ImGui.SameLine();
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ namespace Penumbra.UI
|
|||
var name = Meta!.Name;
|
||||
if( Custom.ImGuiCustom.InputOrText( _editMode, LabelEditName, ref name, 64 ) && _modManager.RenameMod( name, Mod!.Data ) )
|
||||
{
|
||||
_selector.SelectModByDir( Mod.Data.BasePath.Name );
|
||||
_selector.SelectModOnUpdate( Mod.Data.BasePath.Name );
|
||||
if( !_modManager.Config.ModSortOrder.ContainsKey( Mod!.Data.BasePath.Name ) )
|
||||
{
|
||||
Mod.Data.Rename( name );
|
||||
|
|
@ -233,7 +233,7 @@ namespace Penumbra.UI
|
|||
if( ImGui.InputText( "Sort Order", ref currentSortOrder, 256, ImGuiInputTextFlags.EnterReturnsTrue ) )
|
||||
{
|
||||
manager.ChangeSortOrder( mod, currentSortOrder );
|
||||
selector.SelectModByDir( mod.BasePath.Name );
|
||||
selector.SelectModOnUpdate( mod.BasePath.Name );
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -331,7 +331,7 @@ namespace Penumbra.UI
|
|||
{
|
||||
Service< ModManager >.Get()!.RenameModFolder( Mod.Data, newDir, false );
|
||||
|
||||
_selector.SelectModByDir( _newName );
|
||||
_selector.SelectModOnUpdate( _newName );
|
||||
|
||||
closeParent = true;
|
||||
ImGui.CloseCurrentPopup();
|
||||
|
|
|
|||
|
|
@ -168,7 +168,7 @@ namespace Penumbra.UI
|
|||
modMeta.SaveToFile( metaFile );
|
||||
_modManager.AddMod( newDir );
|
||||
ModFileSystem.InvokeChange();
|
||||
SelectModByDir( newDir.Name );
|
||||
SelectModOnUpdate( newDir.Name );
|
||||
}
|
||||
catch( Exception e )
|
||||
{
|
||||
|
|
@ -421,7 +421,8 @@ namespace Penumbra.UI
|
|||
private partial class Selector
|
||||
{
|
||||
public Mod.Mod? Mod { get; private set; }
|
||||
private int _index;
|
||||
private int _index;
|
||||
private string _nextDir = string.Empty;
|
||||
|
||||
private void SetSelection( int idx, Mod.Mod? info )
|
||||
{
|
||||
|
|
@ -458,11 +459,8 @@ namespace Penumbra.UI
|
|||
public void ClearSelection()
|
||||
=> SetSelection( -1 );
|
||||
|
||||
public void SelectModByName( string name )
|
||||
{
|
||||
var (mod, idx) = Cache.GetModByName( name );
|
||||
SetSelection( idx, mod );
|
||||
}
|
||||
public void SelectModOnUpdate( string directory )
|
||||
=> _nextDir = directory;
|
||||
|
||||
public void SelectModByDir( string name )
|
||||
{
|
||||
|
|
@ -479,7 +477,7 @@ namespace Penumbra.UI
|
|||
|
||||
if( _index >= 0 && _modManager.UpdateMod( Mod.Data, reloadMeta, recomputeMeta ) )
|
||||
{
|
||||
SelectModByDir( Mod.Data.BasePath.Name );
|
||||
SelectModOnUpdate( Mod.Data.BasePath.Name );
|
||||
_base._menu.InstalledTab.ModPanel.Details.ResetState();
|
||||
}
|
||||
}
|
||||
|
|
@ -744,9 +742,17 @@ namespace Penumbra.UI
|
|||
|
||||
public void Draw()
|
||||
{
|
||||
if( Cache.Update() && Mod != null )
|
||||
if( Cache.Update() )
|
||||
{
|
||||
SelectModByDir( Mod.Data.BasePath.Name );
|
||||
if( _nextDir.Any() )
|
||||
{
|
||||
SelectModByDir( _nextDir );
|
||||
_nextDir = string.Empty;
|
||||
}
|
||||
else if( Mod != null )
|
||||
{
|
||||
SelectModByDir( Mod.Data.BasePath.Name );
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue