Skip to content

Commit f72a2f1

Browse files
authored
Revert "Add some defensive code around layout propagation (#24217)" (#24441)
This reverts commit d85c05f.
1 parent 3bcd3eb commit f72a2f1

File tree

10 files changed

+59
-89
lines changed

10 files changed

+59
-89
lines changed

Diff for: eng/Versions.props

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<Project>
22
<PropertyGroup>
33
<!-- The .NET product branding version -->
4-
<ProductVersion>8.0.81</ProductVersion>
4+
<ProductVersion>8.0.82</ProductVersion>
55
<MajorVersion>8</MajorVersion>
66
<MinorVersion>0</MinorVersion>
7-
<PatchVersion>81</PatchVersion>
7+
<PatchVersion>82</PatchVersion>
88
<SdkBandVersion>8.0.100</SdkBandVersion>
99
<PreReleaseVersionLabel>servicing</PreReleaseVersionLabel>
1010
<!-- Servicing builds have different characteristics for the way dependencies, baselines, and versions are handled. -->

Diff for: src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs

+29-58
Original file line numberDiff line numberDiff line change
@@ -328,10 +328,7 @@ protected virtual async Task<bool> OnPopViewAsync(Page page, bool animated)
328328
var actuallyRemoved = poppedViewController == null ? true : !await task;
329329
_ignorePopCall = false;
330330

331-
if (poppedViewController is ParentingViewController pvc)
332-
pvc.Disconnect(false);
333-
else
334-
poppedViewController?.Dispose();
331+
poppedViewController?.Dispose();
335332

336333
UpdateToolBarVisible();
337334
return actuallyRemoved;
@@ -1145,9 +1142,7 @@ public Page Child
11451142
return;
11461143

11471144
if (child is not null)
1148-
{
11491145
child.PropertyChanged -= HandleChildPropertyChanged;
1150-
}
11511146

11521147
if (value is not null)
11531148
{
@@ -1277,69 +1272,45 @@ public override void WillMoveToParentViewController(UIViewController parent)
12771272
}
12781273
}
12791274

1280-
internal void Disconnect(bool dispose)
1275+
protected override void Dispose(bool disposing)
12811276
{
1282-
if (Child is Page child)
1277+
if (_disposed)
12831278
{
1284-
child.SendDisappearing();
1285-
child.PropertyChanged -= HandleChildPropertyChanged;
1286-
Child = null;
1279+
return;
12871280
}
12881281

1289-
if (_tracker is not null)
1282+
_disposed = true;
1283+
1284+
if (disposing)
12901285
{
1286+
if (Child is Page child)
1287+
{
1288+
child.SendDisappearing();
1289+
child.PropertyChanged -= HandleChildPropertyChanged;
1290+
Child = null;
1291+
}
1292+
12911293
_tracker.Target = null;
12921294
_tracker.CollectionChanged -= TrackerOnCollectionChanged;
12931295
_tracker = null;
1294-
}
12951296

1296-
if (NavigationItem.TitleView is not null)
1297-
{
1298-
if (dispose)
1297+
if (NavigationItem.TitleView != null)
1298+
{
12991299
NavigationItem.TitleView.Dispose();
1300-
1301-
NavigationItem.TitleView = null;
1302-
}
1303-
1304-
if (NavigationItem.RightBarButtonItems is not null && dispose)
1305-
{
1306-
for (var i = 0; i < NavigationItem.RightBarButtonItems.Length; i++)
1307-
NavigationItem.RightBarButtonItems[i].Dispose();
1308-
}
1309-
1310-
if (ToolbarItems is not null && dispose)
1311-
{
1312-
for (var i = 0; i < ToolbarItems.Length; i++)
1313-
ToolbarItems[i].Dispose();
1314-
}
1315-
1316-
for (int i = View.Subviews.Length - 1; i >= 0; i--)
1317-
{
1318-
View.Subviews[i].RemoveFromSuperview();
1319-
}
1320-
1321-
1322-
for (int i = ChildViewControllers.Length - 1; i >= 0; i--)
1323-
{
1324-
var childViewController = ChildViewControllers[i];
1325-
childViewController.View.RemoveFromSuperview();
1326-
childViewController.RemoveFromParentViewController();
1327-
}
1328-
1329-
}
1330-
1331-
protected override void Dispose(bool disposing)
1332-
{
1333-
if (_disposed)
1334-
{
1335-
return;
1336-
}
1300+
NavigationItem.TitleView = null;
1301+
}
13371302

1338-
_disposed = true;
1303+
if (NavigationItem.RightBarButtonItems != null)
1304+
{
1305+
for (var i = 0; i < NavigationItem.RightBarButtonItems.Length; i++)
1306+
NavigationItem.RightBarButtonItems[i].Dispose();
1307+
}
13391308

1340-
if (disposing)
1341-
{
1342-
Disconnect(true);
1309+
if (ToolbarItems != null)
1310+
{
1311+
for (var i = 0; i < ToolbarItems.Length; i++)
1312+
ToolbarItems[i].Dispose();
1313+
}
13431314
}
13441315

13451316
base.Dispose(disposing);
@@ -2000,7 +1971,7 @@ protected override void Dispose(bool disposing)
20001971

20011972
if (_child != null)
20021973
{
2003-
(_child.ContainerView ?? _child.PlatformView).RemoveFromSuperview();
1974+
_child.PlatformView.RemoveFromSuperview();
20041975
_child.DisconnectHandler();
20051976
_child = null;
20061977
}

Diff for: src/Controls/src/Core/Compatibility/Handlers/iOS/FrameRenderer.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ protected override void Dispose(bool disposing)
207207
public override void SetNeedsLayout()
208208
{
209209
base.SetNeedsLayout();
210-
this.GetSuperViewIfWindowSet()?.SetNeedsLayout();
210+
Superview?.SetNeedsLayout();
211211
}
212212

213213
[Microsoft.Maui.Controls.Internals.Preserve(Conditional = true)]

Diff for: src/Controls/src/Core/NavigationPage/NavigationPage.cs

-2
Original file line numberDiff line numberDiff line change
@@ -402,8 +402,6 @@ void FireAppearing(Page page)
402402
void RemoveFromInnerChildren(Element page)
403403
{
404404
InternalChildren.Remove(page);
405-
406-
// TODO For NET9 we should remove this because the DisconnectHandlers will take care of it
407405
page.Handler = null;
408406
}
409407

Diff for: src/Controls/src/Core/Platform/iOS/Extensions/ButtonExtensions.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ public static void UpdateContentLayout(this UIButton platformButton, Button butt
188188
{
189189
platformButton.ImageEdgeInsets = imageInsets;
190190
platformButton.TitleEdgeInsets = titleInsets;
191-
platformButton.GetSuperViewIfWindowSet()?.SetNeedsLayout();
191+
platformButton.Superview?.SetNeedsLayout();
192192
}
193193
#pragma warning restore CA1416, CA1422
194194
}

Diff for: src/Core/src/Handlers/View/ViewHandlerOfT.iOS.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ void CleanupContainerView(UIView? containerView)
6363
if (containerView is WrapperView wrapperView)
6464
{
6565
wrapperView.RemoveFromSuperview();
66-
wrapperView.Disconnect();
66+
wrapperView.Dispose();
6767
}
6868
}
6969
}

Diff for: src/Core/src/Platform/iOS/LayoutView.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ public override void SubviewAdded(UIView uiview)
1111
{
1212
InvalidateConstraintsCache();
1313
base.SubviewAdded(uiview);
14-
this.GetSuperViewIfWindowSet()?.SetNeedsLayout();
14+
Superview?.SetNeedsLayout();
1515
}
1616

1717
public override void WillRemoveSubview(UIView uiview)
1818
{
1919
InvalidateConstraintsCache();
2020
base.WillRemoveSubview(uiview);
21-
this.GetSuperViewIfWindowSet()?.SetNeedsLayout();
21+
Superview?.SetNeedsLayout();
2222
}
2323

2424
public override UIView? HitTest(CGPoint point, UIEvent? uievent)

Diff for: src/Core/src/Platform/iOS/MauiView.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ public override void SetNeedsLayout()
140140
{
141141
InvalidateConstraintsCache();
142142
base.SetNeedsLayout();
143-
this.GetSuperViewIfWindowSet()?.SetNeedsLayout();
143+
Superview?.SetNeedsLayout();
144144
}
145145

146146
IVisualTreeElement? IVisualTreeElementProvidable.GetElement()

Diff for: src/Core/src/Platform/iOS/ViewExtensions.cs

+1-9
Original file line numberDiff line numberDiff line change
@@ -264,18 +264,10 @@ public static void UpdateBackgroundLayerFrame(this UIView view)
264264
}
265265
}
266266

267-
internal static UIView? GetSuperViewIfWindowSet(this UIView? view)
268-
{
269-
if (view?.Window is null)
270-
return null;
271-
272-
return view.Superview;
273-
}
274-
275267
public static void InvalidateMeasure(this UIView platformView, IView view)
276268
{
277269
platformView.SetNeedsLayout();
278-
platformView.GetSuperViewIfWindowSet()?.SetNeedsLayout();
270+
platformView.Superview?.SetNeedsLayout();
279271
}
280272

281273
public static void UpdateWidth(this UIView platformView, IView view)

Diff for: src/Core/src/Platform/iOS/WrapperView.cs

+21-12
Original file line numberDiff line numberDiff line change
@@ -105,19 +105,12 @@ public override void LayoutSubviews()
105105
SetBorder();
106106
}
107107

108-
internal void Disconnect()
109-
{
110-
MaskLayer = null;
111-
BackgroundMaskLayer = null;
112-
ShadowLayer = null;
113-
_borderView?.RemoveFromSuperview();
114-
}
115-
116-
117-
// TODO obsolete or delete this for NET9
118108
public new void Dispose()
119109
{
120-
Disconnect();
110+
DisposeClip();
111+
DisposeShadow();
112+
DisposeBorder();
113+
121114
base.Dispose();
122115
}
123116

@@ -165,7 +158,7 @@ public override void SetNeedsLayout()
165158
{
166159
base.SetNeedsLayout();
167160

168-
this.GetSuperViewIfWindowSet()?.SetNeedsLayout();
161+
Superview?.SetNeedsLayout();
169162
}
170163

171164
partial void ClipChanged()
@@ -207,6 +200,12 @@ void SetClip()
207200
backgroundMask.Path = nativePath;
208201
}
209202

203+
void DisposeClip()
204+
{
205+
MaskLayer = null;
206+
BackgroundMaskLayer = null;
207+
}
208+
210209
void SetShadow()
211210
{
212211
var shadowLayer = ShadowLayer;
@@ -231,6 +230,11 @@ void SetShadow()
231230
shadowLayer.SetShadow(Shadow);
232231
}
233232

233+
void DisposeShadow()
234+
{
235+
ShadowLayer = null;
236+
}
237+
234238
void SetBorder()
235239
{
236240
if (Border == null)
@@ -247,6 +251,11 @@ void SetBorder()
247251
_borderView.UpdateMauiCALayer(Border);
248252
}
249253

254+
void DisposeBorder()
255+
{
256+
_borderView?.RemoveFromSuperview();
257+
}
258+
250259
CALayer? GetLayer()
251260
{
252261
var sublayers = Layer?.Sublayers;

0 commit comments

Comments
 (0)