Skip to content

Commit

Permalink
Add IsInitialized to IElementHandler
Browse files Browse the repository at this point in the history
  • Loading branch information
MartyIX committed Sep 13, 2024
1 parent 75b2bc9 commit bff5ee4
Show file tree
Hide file tree
Showing 11 changed files with 30 additions and 14 deletions.
6 changes: 3 additions & 3 deletions src/Core/src/Handlers/Element/ElementHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ protected ElementHandler(IPropertyMapper mapper, CommandMapper? commandMapper =

public IElement? VirtualView { get; private protected set; }

internal bool _isPlatformViewNew;
bool IsInitialized { get; set; }

public virtual void SetMauiContext(IMauiContext mauiContext) =>
MauiContext = mauiContext;
Expand All @@ -58,7 +58,7 @@ public virtual void SetVirtualView(IElement view)
isNew = true;
}

_isPlatformViewNew = isNew;
IsInitialized = isNew;

if (VirtualView.Handler != this)
{
Expand Down Expand Up @@ -91,7 +91,7 @@ public virtual void SetVirtualView(IElement view)

_mapper.UpdateProperties(this, VirtualView);

_isPlatformViewNew = false;
IsInitialized = false;
}

public virtual void UpdateValue(string property)
Expand Down
9 changes: 9 additions & 0 deletions src/Core/src/Handlers/IElementHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,15 @@ public interface IElementHandler
/// </summary>
IElement? VirtualView { get; }

/// <summary>
/// Gets if the platform view was initialized for the first time or not.
/// </summary>
#if NETSTANDARD2_0
bool IsInitialized { get; }
#else
bool IsInitialized => false;
#endif

/// <summary>
/// Gets the .NET MAUI context associated with the element.
/// </summary>
Expand Down
2 changes: 1 addition & 1 deletion src/Core/src/Platform/Windows/TransformationExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public static void UpdateTransformation(this FrameworkElement frameworkElement,
if (rotationX % 360 == 0 && rotationY % 360 == 0 && rotation % 360 == 0 &&
translationX == 0 && translationY == 0 && scaleX == 1 && scaleY == 1)
{
bool? skipInitialization = (view.Handler as ElementHandler)?._isPlatformViewNew ?? false;
bool? skipInitialization = view.Handler?.IsInitialized ?? false;

if (skipInitialization != true)
{
Expand Down
20 changes: 10 additions & 10 deletions src/Core/src/Platform/Windows/ViewExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public static void Unfocus(this FrameworkElement platformView, IView view)

public static void UpdateVisibility(this FrameworkElement platformView, IView view)
{
bool? skipInitialization = (view.Handler as ElementHandler)?._isPlatformViewNew ?? false
bool skipInitialization = (view.Handler?.IsInitialized ?? false)
|| !(view.Visibility == Visibility.Visible && view.Opacity == 1.0);

if (skipInitialization != true)
Expand Down Expand Up @@ -99,7 +99,7 @@ public static void UpdateBorder(this FrameworkElement platformView, IView view)
public static void UpdateOpacity(this FrameworkElement platformView, IView view)
{
var opacity = view.Visibility == Visibility.Hidden ? 0 : view.Opacity;
bool? skipInitialization = (view.Handler as ElementHandler)?._isPlatformViewNew ?? false
bool skipInitialization = (view.Handler?.IsInitialized ?? false)
|| opacity != 1;

if (skipInitialization != true)
Expand Down Expand Up @@ -131,7 +131,7 @@ public static void UpdateBackground(this FrameworkElement platformView, IView vi

public static void UpdateFlowDirection(this FrameworkElement platformView, IView view)
{
bool? skipInitialization = (view.Handler as ElementHandler)?._isPlatformViewNew ?? false
bool skipInitialization = (view.Handler?.IsInitialized ?? false)
|| view.FlowDirection != FlowDirection.MatchParent;

if (skipInitialization != true)
Expand All @@ -154,7 +154,7 @@ public static void UpdateFlowDirection(this FrameworkElement platformView, IView

public static void UpdateAutomationId(this FrameworkElement platformView, IView view)
{
bool? skipInitialization = (view.Handler as ElementHandler)?._isPlatformViewNew ?? false
bool skipInitialization = (view.Handler?.IsInitialized ?? false)
|| view.AutomationId is not null;

if (skipInitialization != true)
Expand Down Expand Up @@ -202,7 +202,7 @@ public static void InvalidateMeasure(this FrameworkElement platformView, IView v

public static void UpdateWidth(this FrameworkElement platformView, IView view)
{
bool? skipInitialization = (view.Handler as ElementHandler)?._isPlatformViewNew ?? false
bool skipInitialization = (view.Handler?.IsInitialized ?? false)
|| !double.IsNaN(view.Width);

if (skipInitialization != true)
Expand All @@ -215,7 +215,7 @@ public static void UpdateWidth(this FrameworkElement platformView, IView view)

public static void UpdateHeight(this FrameworkElement platformView, IView view)
{
bool? skipInitialization = (view.Handler as ElementHandler)?._isPlatformViewNew ?? false
bool skipInitialization = (view.Handler?.IsInitialized ?? false)
|| !double.IsNaN(view.Height);

if (skipInitialization != true)
Expand Down Expand Up @@ -246,7 +246,7 @@ public static void UpdateMinimumWidth(this FrameworkElement platformView, IView
{
var minWidth = view.MinimumWidth;

bool? skipInitialization = (view.Handler as ElementHandler)?._isPlatformViewNew ?? false
bool skipInitialization = (view.Handler?.IsInitialized ?? false)
|| Dimension.IsMinimumSet(minWidth);

if (skipInitialization != true)
Expand All @@ -263,7 +263,7 @@ public static void UpdateMinimumWidth(this FrameworkElement platformView, IView

public static void UpdateMaximumHeight(this FrameworkElement platformView, IView view)
{
bool? skipInitialization = (view.Handler as ElementHandler)?._isPlatformViewNew ?? false
bool skipInitialization = (view.Handler?.IsInitialized ?? false)
|| !Dimension.IsMaximumSet(view.MaximumHeight);

if (skipInitialization != true)
Expand All @@ -274,7 +274,7 @@ public static void UpdateMaximumHeight(this FrameworkElement platformView, IView

public static void UpdateMaximumWidth(this FrameworkElement platformView, IView view)
{
bool? skipInitialization = (view.Handler as ElementHandler)?._isPlatformViewNew ?? false
bool skipInitialization = (view.Handler?.IsInitialized ?? false)
|| !Dimension.IsMaximumSet(view.MaximumWidth);

if (skipInitialization != true)
Expand Down Expand Up @@ -466,7 +466,7 @@ internal static void UnfocusControl(Control control)

public static void UpdateInputTransparent(this FrameworkElement nativeView, IViewHandler handler, IView view)
{
bool? skipInitialization = (view.Handler as ElementHandler)?._isPlatformViewNew ?? false
bool skipInitialization = (view.Handler?.IsInitialized ?? false)
|| !view.InputTransparent;

if (skipInitialization != true)
Expand Down
1 change: 1 addition & 0 deletions src/Core/src/PublicAPI/net-android/PublicAPI.Unshipped.txt
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
#nullable enable
Microsoft.Maui.IElementHandler.IsInitialized.get -> bool
1 change: 1 addition & 0 deletions src/Core/src/PublicAPI/net-ios/PublicAPI.Unshipped.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#nullable enable
Microsoft.Maui.IElementHandler.IsInitialized.get -> bool
override Microsoft.Maui.Platform.MauiCALayer.AddAnimation(CoreAnimation.CAAnimation! animation, string? key) -> void
*REMOVED*override Microsoft.Maui.Handlers.BorderHandler.ConnectHandler(Microsoft.Maui.Platform.ContentView! platformView) -> void
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#nullable enable
Microsoft.Maui.IElementHandler.IsInitialized.get -> bool
override Microsoft.Maui.Platform.MauiCALayer.AddAnimation(CoreAnimation.CAAnimation! animation, string? key) -> void
*REMOVED*override Microsoft.Maui.Handlers.BorderHandler.ConnectHandler(Microsoft.Maui.Platform.ContentView! platformView) -> void
1 change: 1 addition & 0 deletions src/Core/src/PublicAPI/net-windows/PublicAPI.Unshipped.txt
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
#nullable enable
Microsoft.Maui.IElementHandler.IsInitialized.get -> bool
1 change: 1 addition & 0 deletions src/Core/src/PublicAPI/net/PublicAPI.Unshipped.txt
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
#nullable enable
Microsoft.Maui.IElementHandler.IsInitialized.get -> bool
1 change: 1 addition & 0 deletions src/Core/src/PublicAPI/netstandard/PublicAPI.Unshipped.txt
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
#nullable enable
Microsoft.Maui.IElementHandler.IsInitialized.get -> bool
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
#nullable enable
Microsoft.Maui.IElementHandler.IsInitialized.get -> bool

0 comments on commit bff5ee4

Please sign in to comment.