diff --git a/ILSpy/TreeNodes/ILSpyTreeNode.cs b/ILSpy/TreeNodes/ILSpyTreeNode.cs index 8f9b7c944..f429cd948 100644 --- a/ILSpy/TreeNodes/ILSpyTreeNode.cs +++ b/ILSpy/TreeNodes/ILSpyTreeNode.cs @@ -156,6 +156,24 @@ namespace ILSpy.TreeNodes } } + /// + /// Re-applies the filter cascade to every realised child when this node becomes + /// visible. only fires for newly-added children, and + /// only when the parent was visible at the time — so children added under a hidden + /// parent inherit stale states. Without this + /// trigger, expanding a node that ShowApiLevel had hidden leaves its accessor + /// children reading as visible even though the cascade would mark them hidden. + /// Mirrors WPF's identical override on ILSpyTreeNode. + /// + protected override void OnIsVisibleChanged() + { + base.OnIsVisibleChanged(); + if (!IsVisible) + return; + foreach (var child in Children.OfType()) + ApplyFilterToChild(child); + } + void ApplyFilterToChild(ILSpyTreeNode child) { var settings = CurrentLanguageSettings;