summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs')
-rw-r--r--Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs53
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;
- }
}
}