mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-05-22 01:06:35 +00:00
Fix main treeview selecting wrong asset after rebuild(#36)
This commit is contained in:
26
PCK-Studio/Extensions/TreeViewExtensions.cs
Normal file
26
PCK-Studio/Extensions/TreeViewExtensions.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using PckStudio.Internal.App;
|
||||
|
||||
namespace PckStudio.Extensions
|
||||
{
|
||||
internal static class TreeViewExtensions
|
||||
{
|
||||
public static TreeNode[] FindPath(this TreeView treeView, string path)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(path))
|
||||
return Array.Empty<TreeNode>();
|
||||
string segment = path.Substring(0, path.IndexOf(treeView.PathSeparator));
|
||||
if (treeView.Nodes.ContainsKey(segment))
|
||||
{
|
||||
var res = treeView.Nodes[segment].GetChildNodes().Where(node => node.FullPath == path).ToArray();
|
||||
return res;
|
||||
}
|
||||
return Array.Empty<TreeNode>();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -423,7 +423,7 @@ namespace PckStudio
|
||||
private void BuildMainTreeView()
|
||||
{
|
||||
// In case the Rename function was just used and the selected node name no longer matches the file name
|
||||
string selectedNodeText = treeViewMain.SelectedNode is TreeNode node ? node.Text : string.Empty;
|
||||
string selectedNodeText = treeViewMain.SelectedNode is TreeNode node ? node.FullPath : string.Empty;
|
||||
previewPictureBox.Image = Resources.NoImageFound;
|
||||
treeMeta.Nodes.Clear();
|
||||
treeViewMain.Nodes.Clear();
|
||||
@@ -440,9 +440,8 @@ namespace PckStudio
|
||||
}
|
||||
treeViewMain.Sort();
|
||||
|
||||
TreeNode[] selectedNodes;
|
||||
if (!string.IsNullOrEmpty(selectedNodeText) &&
|
||||
(selectedNodes = treeViewMain.Nodes.Find(selectedNodeText, true)).Length > 0)
|
||||
TreeNode[] selectedNodes = treeViewMain.FindPath(selectedNodeText);
|
||||
if (selectedNodes.Length > 0)
|
||||
{
|
||||
treeViewMain.SelectedNode = selectedNodes[0];
|
||||
}
|
||||
|
||||
@@ -134,6 +134,7 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Extensions\MaterialContainerExtensions.cs" />
|
||||
<Compile Include="Extensions\TreeViewExtensions.cs" />
|
||||
<Compile Include="Forms\Additional-Popups\FilterPrompt.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
|
||||
Reference in New Issue
Block a user