From b89033e3281f14e282777d4515cd910c930552a4 Mon Sep 17 00:00:00 2001
From: huiyueun <35286162+huiyueun@users.noreply.github.com>
Date: Thu, 25 Jan 2018 13:44:48 +0900
Subject: [PATCH] [NUI] Apply sibling patch (#79)
* [NUI] Fix sibling issue
This reverts commit c52e414d9473f1ec744bb30eeed0bed033eec2dc.
* [NUI]Fix bug about Children property.
This reverts commit 5f2fa0f0e7bc26eed46b38431f6b702cc396e52f.
* [NUI] Fix SiblingOrder return value
This reverts commit 83d9228a204bccef4f9cd7b8d5927c869d8e41b4.
---
src/Tizen.NUI/src/public/BaseComponents/View.cs | 82 ++++++++++++++++++++++---
src/Tizen.NUI/src/public/Layer.cs | 49 +++++++++++++--
2 files changed, 117 insertions(+), 14 deletions(-)
diff --git a/src/Tizen.NUI/src/public/BaseComponents/View.cs b/src/Tizen.NUI/src/public/BaseComponents/View.cs
index 41668b2..0e3ae04 100755
--- a/src/Tizen.NUI/src/public/BaseComponents/View.cs
+++ b/src/Tizen.NUI/src/public/BaseComponents/View.cs
@@ -49,11 +49,18 @@ namespace Tizen.NUI.BaseComponents
/// 4
public override void Add(View child)
{
- NDalicPINVOKE.Actor_Add(swigCPtr, View.getCPtr(child));
- if (NDalicPINVOKE.SWIGPendingException.Pending)
- throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-
- Children.Add(child);
+ Container oldParent = child.Parent;
+ if(oldParent != this)
+ {
+ if (oldParent != null)
+ {
+ oldParent.Remove(child);
+ }
+ NDalicPINVOKE.Actor_Add(swigCPtr, View.getCPtr(child));
+ if (NDalicPINVOKE.SWIGPendingException.Pending)
+ throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ Children.Add(child);
+ }
}
///
@@ -2248,13 +2255,54 @@ namespace Tizen.NUI.BaseComponents
{
get
{
- int temp = 0;
- GetProperty(View.Property.SIBLING_ORDER).Get(out temp);
- return temp;
+ var parentChildren = Parent?.Children;
+ int currentOrder = 0;
+ if (parentChildren != null)
+ {
+ currentOrder = parentChildren.IndexOf(this);
+
+ if (currentOrder < 0)
+ {
+ return 0;
+ }
+ else if (currentOrder < parentChildren.Count)
+ {
+ return currentOrder;
+ }
+ }
+
+ return 0;
}
set
{
- SetProperty(View.Property.SIBLING_ORDER, new Tizen.NUI.PropertyValue(value));
+ var siblings = Parent?.Children;
+ if (siblings != null)
+ {
+ int currentOrder = siblings.IndexOf(this);
+
+ if (value != currentOrder)
+ {
+ if (value == 0)
+ {
+ LowerToBottom();
+ }
+ else if (value < siblings.Count - 1)
+ {
+ if (value > currentOrder)
+ {
+ RaiseAbove(siblings[value]);
+ }
+ else
+ {
+ LowerBelow(siblings[value]);
+ }
+ }
+ else
+ {
+ RaiseToTop();
+ }
+ }
+ }
}
}
@@ -3696,6 +3744,22 @@ namespace Tizen.NUI.BaseComponents
}
}
+
+ ///
+ /// [Obsolete("Please do not use! this will be deprecated. Please use Visibility instead.")]
+ ///
+ /// 3
+ [Obsolete("Please do not use! This will be deprecated! Please use Visibility instead!")]
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public bool Visible
+ {
+ get
+ {
+ return IsVisible();
+ }
+ }
+
+
///
/// Gets the view's world color.
///
diff --git a/src/Tizen.NUI/src/public/Layer.cs b/src/Tizen.NUI/src/public/Layer.cs
index 8fee27b..9264686 100755
--- a/src/Tizen.NUI/src/public/Layer.cs
+++ b/src/Tizen.NUI/src/public/Layer.cs
@@ -50,11 +50,18 @@ namespace Tizen.NUI
/// 4
public override void Add(View child)
{
- NDalicPINVOKE.Actor_Add(swigCPtr, View.getCPtr(child));
- if (NDalicPINVOKE.SWIGPendingException.Pending)
- throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-
- Children.Add(child);
+ Container oldParent = child.GetParent();
+ if (oldParent != this)
+ {
+ if (oldParent != null)
+ {
+ oldParent.Remove(child);
+ }
+ NDalicPINVOKE.Actor_Add(swigCPtr, View.getCPtr(child));
+ if (NDalicPINVOKE.SWIGPendingException.Pending)
+ throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ Children.Add(child);
+ }
}
///
@@ -263,6 +270,8 @@ namespace Tizen.NUI
parentChildren[currentIdx] = temp;
}
}
+ NDalicPINVOKE.Layer_Raise(swigCPtr);
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
///
@@ -286,16 +295,46 @@ namespace Tizen.NUI
}
}
+ NDalicPINVOKE.Layer_Lower(swigCPtr);
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
internal void RaiseAbove(Layer target)
{
+ var parentChildren = Window.Instance.LayersChildren;
+ if (parentChildren != null)
+ {
+ int currentIndex = parentChildren.IndexOf(this);
+ int targetIndex = parentChildren.IndexOf(target);
+
+ // If the currentIndex is less than the target index and the target has the same parent.
+ if (currentIndex < targetIndex)
+ {
+ parentChildren.Remove(this);
+ parentChildren.Insert(targetIndex, this);
+ }
+ }
NDalicPINVOKE.Layer_RaiseAbove(swigCPtr, Layer.getCPtr(target));
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
internal void LowerBelow(Layer target)
{
+ var parentChildren = Window.Instance.LayersChildren;
+
+ if (parentChildren != null)
+ {
+ int currentIndex = parentChildren.IndexOf(this);
+ int targetIndex = parentChildren.IndexOf(target);
+
+ // If the currentIndex is not already the 0th index and the target has the same parent.
+ if ((currentIndex != 0) && (targetIndex != -1) &&
+ (currentIndex > targetIndex))
+ {
+ parentChildren.Remove(this);
+ parentChildren.Insert(targetIndex, this);
+ }
+ }
NDalicPINVOKE.Layer_LowerBelow(swigCPtr, Layer.getCPtr(target));
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
--
2.7.4