diff options
author | Kangho Hur <kangho.hur@samsung.com> | 2017-04-25 10:36:32 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@review.ap-northeast-2.compute.internal> | 2017-04-25 10:36:32 +0000 |
commit | 945d90388fc499ec34d6d2066e7981fa78ec4c4c (patch) | |
tree | 7a011e59f161cbf5e16ceb829f86c94081f42659 /Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs | |
parent | 6e8e89f0547f885a041d94c81c3caaeab7c24331 (diff) | |
parent | 48b36ce652543441c94880594a8add92095c9b2a (diff) | |
download | xamarin-forms-945d90388fc499ec34d6d2066e7981fa78ec4c4c.tar.gz xamarin-forms-945d90388fc499ec34d6d2066e7981fa78ec4c4c.tar.bz2 xamarin-forms-945d90388fc499ec34d6d2066e7981fa78ec4c4c.zip |
Merge "New way of layout" into tizen
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 978a5b5a..a3282a3f 100644 --- a/Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs +++ b/Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs @@ -45,9 +45,7 @@ namespace Xamarin.Forms.Platform.Tizen HashSet<string> _batchedProperties = new HashSet<string>(); - int _layoutCallback = 0; bool _movedCallbackEnabled = false; - /// <summary> /// Default constructor. /// </summary> @@ -257,21 +255,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> @@ -471,12 +458,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)) @@ -559,16 +544,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() @@ -611,12 +587,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) @@ -1049,18 +1025,5 @@ namespace Xamarin.Forms.Platform.Tizen return EFocusDirection.Next; } - - void EnterNativeLayoutCallback() - { - _layoutCallback++; - } - void LeaveNativeLayoutCallback() - { - _layoutCallback--; - } - bool IsNativeLayouting() - { - return _layoutCallback > 0; - } } } |