From: huiyu.eun Date: Thu, 8 Apr 2021 07:42:03 +0000 (+0900) Subject: [NUI] Create TextLayout when parent has layout X-Git-Tag: submit/tizen_6.0/20210409.005228~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7eb70d7a86ca976302a76caafa2ec792c67467a6;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git [NUI] Create TextLayout when parent has layout This reverts commit 4ae0d05007a1e6a686c9516dcad8a8f70a08349a. --- diff --git a/src/Tizen.NUI/src/public/BaseComponents/TextLabel.cs b/src/Tizen.NUI/src/public/BaseComponents/TextLabel.cs index fd7636f13..54dbbebf1 100755 --- a/src/Tizen.NUI/src/public/BaseComponents/TextLabel.cs +++ b/src/Tizen.NUI/src/public/BaseComponents/TextLabel.cs @@ -97,14 +97,12 @@ namespace Tizen.NUI.BaseComponents public TextLabel() : this(Interop.TextLabel.TextLabel_New__SWIG_0(), true) { if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); - Layout = new TextLayout(); } /// This will be public opened in next release of tizen after ACR done. Before ACR, it is used as HiddenAPI (InhouseAPI). [EditorBrowsable(EditorBrowsableState.Never)] public TextLabel(TextLabelStyle viewStyle) : this(Interop.TextLabel.TextLabel_New__SWIG_0(), true, viewStyle) { - Layout = new TextLayout(); } /// @@ -116,7 +114,6 @@ namespace Tizen.NUI.BaseComponents public TextLabel(bool shown) : this(Interop.TextLabel.TextLabel_New__SWIG_0(), true) { if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); - Layout = new TextLayout(); SetVisible(shown); } @@ -128,7 +125,6 @@ namespace Tizen.NUI.BaseComponents public TextLabel(string text) : this(Interop.TextLabel.TextLabel_New__SWIG_1(text), true) { if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); - Layout = new TextLayout(); } /// @@ -141,7 +137,6 @@ namespace Tizen.NUI.BaseComponents public TextLabel(string text, bool shown) : this(Interop.TextLabel.TextLabel_New__SWIG_1(text), true) { if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); - Layout = new TextLayout(); SetVisible(shown); } @@ -171,6 +166,14 @@ namespace Tizen.NUI.BaseComponents } } + /// + /// Create internal layout of TextLabel + /// + internal LayoutItem CreateTextLayout() + { + return new TextLayout(); + } + /// /// The TranslatableText property.
/// The text can set the SID value.
diff --git a/src/Tizen.NUI/src/public/BaseComponents/View.cs b/src/Tizen.NUI/src/public/BaseComponents/View.cs index 294d7aed8..e6243cce5 100755 --- a/src/Tizen.NUI/src/public/BaseComponents/View.cs +++ b/src/Tizen.NUI/src/public/BaseComponents/View.cs @@ -2163,24 +2163,28 @@ namespace Tizen.NUI.BaseComponents else { // First Layout to be added to the View hence copy - // Do not try to set Margins or Padding on a null Layout (when a layout is being removed from a View) - if (value !=null) + if (value != null) { - if (Margin.Top != 0 || Margin.Bottom !=0 || Margin.Start !=0 || Margin.End != 0) + if (Margin.Top != 0 || Margin.Bottom != 0 || Margin.Start != 0 || Margin.End != 0) { // If View already has a margin set then store it in Layout instead. value.Margin = Margin; - SetValue(MarginProperty, new Extents(0,0,0,0)); + SetValue(MarginProperty, new Extents(0, 0, 0, 0)); NotifyPropertyChanged(); } - if (Padding.Top != 0 || Padding.Bottom !=0 || Padding.Start !=0 || Padding.End != 0) + if (Padding.Top != 0 || Padding.Bottom != 0 || Padding.Start != 0 || Padding.End != 0) { // If View already has a padding set then store it in Layout instead. value.Padding = Padding; - SetValue(PaddingProperty, new Extents(0,0,0,0)); - NotifyPropertyChanged(); + // If Layout is a LayoutItem then it could be a View that handles it's own padding. + // Let the View keeps it's padding. Still store Padding in Layout to reduce code paths. + if (typeof(LayoutGroup).IsAssignableFrom(value.GetType())) // If a Layout container of some kind. + { + SetValue(PaddingProperty, new Extents(0, 0, 0, 0)); + NotifyPropertyChanged(); + } } } } diff --git a/src/Tizen.NUI/src/public/Layouting/LayoutGroup.cs b/src/Tizen.NUI/src/public/Layouting/LayoutGroup.cs index 6d28894a0..091824e61 100755 --- a/src/Tizen.NUI/src/public/Layouting/LayoutGroup.cs +++ b/src/Tizen.NUI/src/public/Layouting/LayoutGroup.cs @@ -166,7 +166,7 @@ namespace Tizen.NUI { // If child of this layout is a pure View then assign it a LayoutGroup // If the child is derived from a View then it may be a legacy or existing container hence will do layouting itself. - child.Layout = new AbsoluteLayout(); + child.Layout = (child as TextLabel)?.CreateTextLayout() ?? new AbsoluteLayout(); } } else @@ -442,6 +442,10 @@ namespace Tizen.NUI // Layout takes ownership of it's owner's children. foreach (View view in Owner.Children) { + if (view is TextLabel) + { + view.Layout = (view as TextLabel)?.CreateTextLayout(); + } AddChildToLayoutGroup(view); }