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;