@@ -33,5 +33,83 @@ public void GetAdornerLayer_Returns_Dedicated_AdornerLayer_For_Controls_Inside_O
3333 Assert . NotNull ( mainAdornerLayer ) ;
3434 Assert . NotSame ( overlayAdornerLayer , mainAdornerLayer ) ;
3535 }
36+
37+ [ Fact ]
38+ public void GetAdornerLayer_Returns_Same_AdornerLayer_For_VisualLayerManager ( )
39+ {
40+ var vlm = new VisualLayerManager ( ) ;
41+ var root = new TestRoot { Child = vlm } ;
42+
43+ root . Measure ( new Size ( 100 , 100 ) ) ;
44+ root . Arrange ( new Rect ( 0 , 0 , 100 , 100 ) ) ;
45+
46+ var adornerLayer = vlm . AdornerLayer ;
47+ Assert . NotNull ( adornerLayer ) ;
48+
49+ // The adorner layer for a control inside the OverlayLayer
50+ // should be the dedicated one, not the main VLM adorner layer.
51+ var target = AdornerLayer . GetAdornerLayer ( vlm ) ;
52+ Assert . NotNull ( target ) ;
53+ Assert . Same ( adornerLayer , target ) ;
54+ }
55+
56+ [ Fact ]
57+ public void GetAdornerLayer_Returns_Same_AdornerLayer_For_Child ( )
58+ {
59+ var button = new Button ( ) ;
60+ var vlm = new VisualLayerManager ( ) { Child = button } ;
61+ var root = new TestRoot { Child = vlm } ;
62+
63+ root . Measure ( new Size ( 100 , 100 ) ) ;
64+ root . Arrange ( new Rect ( 0 , 0 , 100 , 100 ) ) ;
65+
66+ var adornerLayer = vlm . AdornerLayer ;
67+ Assert . NotNull ( adornerLayer ) ;
68+
69+ // The adorner layer for a control inside the OverlayLayer
70+ // should be the dedicated one, not the main VLM adorner layer.
71+ var target = AdornerLayer . GetAdornerLayer ( button ) ;
72+ Assert . NotNull ( target ) ;
73+ Assert . Same ( adornerLayer , target ) ;
74+ }
75+
76+ [ Fact ]
77+ public void GetOverlayLayer_Returns_Same_OverlayLayer_For_VisualLayerManager ( )
78+ {
79+ var vlm = new VisualLayerManager ( ) { EnableOverlayLayer = true } ;
80+ var root = new TestRoot { Child = vlm } ;
81+
82+ root . Measure ( new Size ( 100 , 100 ) ) ;
83+ root . Arrange ( new Rect ( 0 , 0 , 100 , 100 ) ) ;
84+
85+ var overlayLayer = vlm . OverlayLayer ;
86+ Assert . NotNull ( overlayLayer ) ;
87+
88+ // The adorner layer for a control inside the OverlayLayer
89+ // should be the dedicated one, not the main VLM adorner layer.
90+ var target = OverlayLayer . GetOverlayLayer ( vlm ) ;
91+ Assert . NotNull ( target ) ;
92+ Assert . Same ( overlayLayer , target ) ;
93+ }
94+
95+ [ Fact ]
96+ public void GetOverlayLayer_Returns_Same_OverlayLayer_For_Child ( )
97+ {
98+ var button = new Button ( ) ;
99+ var vlm = new VisualLayerManager ( ) { EnableOverlayLayer = true , Child = button } ;
100+ var root = new TestRoot { Child = vlm } ;
101+
102+ root . Measure ( new Size ( 100 , 100 ) ) ;
103+ root . Arrange ( new Rect ( 0 , 0 , 100 , 100 ) ) ;
104+
105+ var overlayLayer = vlm . OverlayLayer ;
106+ Assert . NotNull ( overlayLayer ) ;
107+
108+ // The adorner layer for a control inside the OverlayLayer
109+ // should be the dedicated one, not the main VLM adorner layer.
110+ var target = OverlayLayer . GetOverlayLayer ( button ) ;
111+ Assert . NotNull ( target ) ;
112+ Assert . Same ( overlayLayer , target ) ;
113+ }
36114 }
37115}
0 commit comments