diff options
Diffstat (limited to 'Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs')
-rw-r--r-- | Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs | 53 |
1 files changed, 8 insertions, 45 deletions
diff --git a/Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs b/Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs index 512e3047..59b5fde0 100644 --- a/Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs +++ b/Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs @@ -44,9 +44,7 @@ namespace Xamarin.Forms.Platform.Tizen HashSet<string> _batchedProperties = new HashSet<string>(); - int _layoutCallback = 0; bool _movedCallbackEnabled = false; - /// <summary> /// Default constructor. /// </summary> @@ -256,21 +254,10 @@ namespace Xamarin.Forms.Platform.Tizen protected virtual void UpdateLayout() { - // we're updating the coordinates of native control only if they were modified - // via Xamarin (IsNativeLayouting() returns false); - // otherwise native control is already in the right place - if (!IsNativeLayouting() && null != NativeView) + if (null != NativeView) { UpdateNativeGeometry(); } - - // we're updating just immediate children - // To update the relative postion of children - var logicalChildren = (Element as IElementController).LogicalChildren; - foreach (var child in logicalChildren) - { - Platform.GetRenderer(child)?.UpdateNativeGeometry(); - } } /// <summary> @@ -470,12 +457,10 @@ namespace Xamarin.Forms.Platform.Tizen { if (_flags.HasFlag(VisualElementRendererFlags.NeedsLayout)) { - if (!IsNativeLayouting()) - { - UpdateNativeGeometry(); - // UpdateLayout already updates transformation, clear NeedsTranformation flag then - _flags &= ~VisualElementRendererFlags.NeedsTransformation; - } + UpdateLayout(); + // UpdateLayout already updates transformation, clear NeedsTranformation flag then + _flags &= ~VisualElementRendererFlags.NeedsTransformation; + _flags ^= VisualElementRendererFlags.NeedsLayout; } if (_flags.HasFlag(VisualElementRendererFlags.NeedsTransformation)) @@ -558,16 +543,7 @@ namespace Xamarin.Forms.Platform.Tizen protected void DoLayout(Native.LayoutEventArgs e) { - EnterNativeLayoutCallback(); - if (e.HasChanged) - { - var bound = e.Geometry.ToDP(); - bound.X = Element.X; - bound.Y = Element.Y; - Element.Layout(bound); - UpdateLayout(); - } - LeaveNativeLayoutCallback(); + Element.Layout(e.Geometry.ToDP()); } protected virtual Size MinimumSize() @@ -610,12 +586,12 @@ namespace Xamarin.Forms.Platform.Tizen static double ComputeAbsoluteX(VisualElement e) { - return e.X + (e.RealParent is VisualElement ? Forms.ConvertToScaledDP(Platform.GetRenderer(e.RealParent).NativeView.Geometry.X) : 0.0); + return e.X + ((e.RealParent is VisualElement) && !(e.RealParent is ListView) ? Forms.ConvertToScaledDP(Platform.GetRenderer(e.RealParent).NativeView.Geometry.X) : 0.0); } static double ComputeAbsoluteY(VisualElement e) { - return e.Y + (e.RealParent is VisualElement ? Forms.ConvertToScaledDP(Platform.GetRenderer(e.RealParent).NativeView.Geometry.Y) : 0.0); + return e.Y + ((e.RealParent is VisualElement) && !(e.RealParent is ListView) ? Forms.ConvertToScaledDP(Platform.GetRenderer(e.RealParent).NativeView.Geometry.Y) : 0.0); } static Point ComputeAbsolutePoint(VisualElement e) @@ -1048,18 +1024,5 @@ namespace Xamarin.Forms.Platform.Tizen return EFocusDirection.Next; } - - void EnterNativeLayoutCallback() - { - _layoutCallback++; - } - void LeaveNativeLayoutCallback() - { - _layoutCallback--; - } - bool IsNativeLayouting() - { - return _layoutCallback > 0; - } } } |