diff --git a/ILSpy/ILSpy.csproj b/ILSpy/ILSpy.csproj index 942f8a806..0b80629b3 100644 --- a/ILSpy/ILSpy.csproj +++ b/ILSpy/ILSpy.csproj @@ -199,5 +199,11 @@ + + + + + + \ No newline at end of file diff --git a/ILSpy/ILSpyTreeNode.cs b/ILSpy/ILSpyTreeNode.cs index f8489db54..2369577be 100644 --- a/ILSpy/ILSpyTreeNode.cs +++ b/ILSpy/ILSpyTreeNode.cs @@ -64,11 +64,15 @@ namespace ICSharpCode.ILSpy /// Hidden, /// - /// Shows the node. + /// Shows the node (and resets the search term for child nodes). /// Match, /// - /// Hides the node only if all children are hidden. + /// Hides the node only if all children are hidden (and resets the search term for child nodes). + /// + MatchAndRecurse, + /// + /// Hides the node only if all children are hidden (doesn't reset the search term for child nodes). /// Recurse } @@ -127,8 +131,8 @@ namespace ICSharpCode.ILSpy // don't add to base.Children break; case FilterResult.Match: - base.Children.Add(child); child.FilterSettings = StripSearchTerm(this.FilterSettings); + base.Children.Add(child); break; case FilterResult.Recurse: child.FilterSettings = this.FilterSettings; @@ -136,6 +140,12 @@ namespace ICSharpCode.ILSpy if (child.VisibleChildren.Count > 0) base.Children.Add(child); break; + case FilterResult.MatchAndRecurse: + child.FilterSettings = StripSearchTerm(this.FilterSettings); + child.EnsureLazyChildren(); + if (child.VisibleChildren.Count > 0) + base.Children.Add(child); + break; default: throw new InvalidEnumArgumentException(); } diff --git a/ILSpy/Images/Back.png b/ILSpy/Images/Back.png new file mode 100644 index 000000000..c165b435e Binary files /dev/null and b/ILSpy/Images/Back.png differ diff --git a/ILSpy/Images/Forward.png b/ILSpy/Images/Forward.png new file mode 100644 index 000000000..c1543df93 Binary files /dev/null and b/ILSpy/Images/Forward.png differ diff --git a/ILSpy/Images/PrivateInternal.png b/ILSpy/Images/PrivateInternal.png new file mode 100644 index 000000000..da9c15ac0 Binary files /dev/null and b/ILSpy/Images/PrivateInternal.png differ diff --git a/ILSpy/MainWindow.xaml b/ILSpy/MainWindow.xaml index 5d429c775..0b893548c 100644 --- a/ILSpy/MainWindow.xaml +++ b/ILSpy/MainWindow.xaml @@ -17,58 +17,53 @@ Executed="OpenCommandExecuted" /> - - - + + + + - + - + + + + + + + + - - + + + - - + + + + diff --git a/ILSpy/MainWindow.xaml.cs b/ILSpy/MainWindow.xaml.cs index 3f7a45ecc..a7dd55e7c 100644 --- a/ILSpy/MainWindow.xaml.cs +++ b/ILSpy/MainWindow.xaml.cs @@ -25,6 +25,7 @@ using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Threading; + using ICSharpCode.Decompiler; using ICSharpCode.Decompiler.FlowAnalysis; using ICSharpCode.TreeView; diff --git a/ILSpy/NamespaceTreeNode.cs b/ILSpy/NamespaceTreeNode.cs index 52d2a853e..7e54d9e92 100644 --- a/ILSpy/NamespaceTreeNode.cs +++ b/ILSpy/NamespaceTreeNode.cs @@ -48,7 +48,7 @@ namespace ICSharpCode.ILSpy public override FilterResult Filter(FilterSettings settings) { if (settings.SearchTermMatches(name)) - return FilterResult.Match; + return FilterResult.MatchAndRecurse; else return FilterResult.Recurse; } diff --git a/ILSpy/ResourceListTreeNode.cs b/ILSpy/ResourceListTreeNode.cs index abee48299..02457b979 100644 --- a/ILSpy/ResourceListTreeNode.cs +++ b/ILSpy/ResourceListTreeNode.cs @@ -36,7 +36,7 @@ namespace ICSharpCode.ILSpy public override FilterResult Filter(FilterSettings settings) { if (string.IsNullOrEmpty(settings.SearchTerm)) - return FilterResult.Match; + return FilterResult.MatchAndRecurse; else return FilterResult.Recurse; }