diff --git a/AssetStudio/AssetStudioForm.cs b/AssetStudio/AssetStudioForm.cs index 8a8e821..72f3cb1 100644 --- a/AssetStudio/AssetStudioForm.cs +++ b/AssetStudio/AssetStudioForm.cs @@ -245,18 +245,9 @@ namespace AssetStudio private void typeToolStripMenuItem_Click(object sender, EventArgs e) { var typeItem = (ToolStripMenuItem)sender; - var show = new List(); if (typeItem != allToolStripMenuItem) { allToolStripMenuItem.Checked = false; - for (var i = 1; i < showTypeToolStripMenuItem.DropDownItems.Count; i++) - { - var item = (ToolStripMenuItem)showTypeToolStripMenuItem.DropDownItems[i]; - if (item.Checked) - { - show.Add((ClassIDReference)Enum.Parse(typeof(ClassIDReference), item.Text)); - } - } } else if (allToolStripMenuItem.Checked) { @@ -266,11 +257,7 @@ namespace AssetStudio item.Checked = false; } } - assetListView.BeginUpdate(); - assetListView.SelectedIndices.Clear(); - visibleAssets = allToolStripMenuItem.Checked ? exportableAssets : exportableAssets.FindAll(x => show.Contains(x.Type)); - assetListView.VirtualListSize = visibleAssets.Count; - assetListView.EndUpdate(); + FilterAssetList(); } private void AssetStudioForm_KeyDown(object sender, KeyEventArgs e) @@ -655,11 +642,7 @@ namespace AssetStudio { if (enableFiltering) { - assetListView.BeginUpdate(); - assetListView.SelectedIndices.Clear(); - visibleAssets = exportableAssets.FindAll(ListAsset => ListAsset.Text.IndexOf(listSearch.Text, StringComparison.CurrentCultureIgnoreCase) >= 0); - assetListView.VirtualListSize = visibleAssets.Count; - assetListView.EndUpdate(); + FilterAssetList(); } } @@ -1886,5 +1869,35 @@ namespace AssetStudio return selectedAssets; } + + private void FilterAssetList() + { + assetListView.BeginUpdate(); + assetListView.SelectedIndices.Clear(); + visibleAssets.Clear(); + var show = new List(); + if (!allToolStripMenuItem.Checked) + { + for (var i = 1; i < showTypeToolStripMenuItem.DropDownItems.Count; i++) + { + var item = (ToolStripMenuItem)showTypeToolStripMenuItem.DropDownItems[i]; + if (item.Checked) + { + show.Add((ClassIDReference)Enum.Parse(typeof(ClassIDReference), item.Text)); + } + } + visibleAssets = exportableAssets.FindAll(x => show.Contains(x.Type)); + } + else + { + visibleAssets = exportableAssets; + } + if (listSearch.Text != " Filter ") + { + visibleAssets = visibleAssets.FindAll(x => x.Text.IndexOf(listSearch.Text, StringComparison.CurrentCultureIgnoreCase) >= 0); + } + assetListView.VirtualListSize = visibleAssets.Count; + assetListView.EndUpdate(); + } } } diff --git a/AssetStudio/StudioClasses/Studio.cs b/AssetStudio/StudioClasses/Studio.cs index ea46516..2590f66 100644 --- a/AssetStudio/StudioClasses/Studio.cs +++ b/AssetStudio/StudioClasses/Studio.cs @@ -319,7 +319,7 @@ namespace AssetStudio exportableAssets.AddRange(assetsFile.exportableAssets); } - visibleAssets = exportableAssets; + visibleAssets = exportableAssets.ToList(); exportableAssetsHash.Clear(); } #endregion