Browse Source

#2822: Fix filter update in SearchPane.

pull/2828/head
Siegfried Pammer 3 years ago
parent
commit
6de775c8f3
  1. 4
      ILSpy/MainWindow.xaml.cs
  2. 21
      ILSpy/Search/SearchPane.cs

4
ILSpy/MainWindow.xaml.cs

@ -1088,8 +1088,10 @@ namespace ICSharpCode.ILSpy @@ -1088,8 +1088,10 @@ namespace ICSharpCode.ILSpy
// filterSettings is mutable; but the ILSpyTreeNode filtering assumes that filter settings are immutable.
// Thus, the main window will use one mutable instance (for data-binding), and assign a new clone to the ILSpyTreeNodes whenever the main
// mutable instance changes.
FilterSettings filterSettings = DockWorkspace.Instance.ActiveTabPage.FilterSettings.Clone();
if (assemblyListTreeNode != null)
assemblyListTreeNode.FilterSettings = DockWorkspace.Instance.ActiveTabPage.FilterSettings.Clone();
assemblyListTreeNode.FilterSettings = filterSettings;
SearchPane.UpdateFilter(filterSettings);
}
internal AssemblyListTreeNode AssemblyListTreeNode {

21
ILSpy/Search/SearchPane.cs

@ -79,27 +79,13 @@ namespace ICSharpCode.ILSpy.Search @@ -79,27 +79,13 @@ namespace ICSharpCode.ILSpy.Search
ContextMenuProvider.Add(listBox);
MainWindow.Instance.CurrentAssemblyListChanged += MainWindow_Instance_CurrentAssemblyListChanged;
DockWorkspace.Instance.PropertyChanged += DockWorkspace_PropertyChanged;
filterSettings = MainWindow.Instance.SessionSettings.FilterSettings;
filterSettings.PropertyChanged += FilterSettings_PropertyChanged;
CompositionTarget.Rendering += UpdateResults;
// This starts empty search right away, so do at the end (we're still in ctor)
searchModeComboBox.SelectedIndex = (int)MainWindow.Instance.SessionSettings.SelectedSearchMode;
}
private void DockWorkspace_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
switch (e.PropertyName)
{
case nameof(DockWorkspace.Instance.ActiveTabPage):
filterSettings.PropertyChanged -= FilterSettings_PropertyChanged;
filterSettings = DockWorkspace.Instance.ActiveTabPage.FilterSettings;
filterSettings.PropertyChanged += FilterSettings_PropertyChanged;
break;
}
}
void MainWindow_Instance_CurrentAssemblyListChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if (IsVisible)
@ -113,10 +99,9 @@ namespace ICSharpCode.ILSpy.Search @@ -113,10 +99,9 @@ namespace ICSharpCode.ILSpy.Search
}
}
void FilterSettings_PropertyChanged(object sender, PropertyChangedEventArgs e)
internal void UpdateFilter(FilterSettings settings)
{
if (e.PropertyName != nameof(FilterSettings.ShowApiLevel))
return;
this.filterSettings = settings;
if (IsVisible)
{
@ -261,7 +246,7 @@ namespace ICSharpCode.ILSpy.Search @@ -261,7 +246,7 @@ namespace ICSharpCode.ILSpy.Search
searchProgressBar.IsIndeterminate = true;
startedSearch = new RunningSearch(await mainWindow.CurrentAssemblyList.GetAllAssemblies(), searchTerm,
(SearchMode)searchModeComboBox.SelectedIndex, mainWindow.CurrentLanguage,
mainWindow.SessionSettings.FilterSettings.ShowApiLevel);
filterSettings.ShowApiLevel);
currentSearch = startedSearch;
await startedSearch.Run();

Loading…
Cancel
Save