From: Eunki, Hong Date: Wed, 14 May 2025 07:43:01 +0000 (+0900) Subject: [NUI][API10] Support to view constructor which we can ignore Relayout X-Git-Tag: submit/tizen_7.0/20250514.080949~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bf478bd172351f49613c0ee560e4c83d8fa8c0c1;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git [NUI][API10] Support to view constructor which we can ignore Relayout Backward propagate of #6664 Signed-off-by: Eunki, Hong --- diff --git a/src/Tizen.NUI/src/public/BaseComponents/View.cs b/src/Tizen.NUI/src/public/BaseComponents/View.cs index 846ad432b..3d7e1b8b5 100755 --- a/src/Tizen.NUI/src/public/BaseComponents/View.cs +++ b/src/Tizen.NUI/src/public/BaseComponents/View.cs @@ -138,18 +138,68 @@ namespace Tizen.NUI.BaseComponents Custom, } - private static IntPtr NewWithAccessibilityMode(ViewAccessibilityMode accessibilityMode) + /// + /// ResizePolicy mode for controlling View's Relayout implementation. + /// It will be used when we can ensure that current view + /// will not use ResizePolicy and Relayout signal. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + public enum ViewResizePolicyMode + { + /// + /// Default implementation. Will consider ResizePolicy and Relayout implementations + /// + [EditorBrowsable(EditorBrowsableState.Never)] + Default, + /// + /// Ignore ResizePolicy and relative functions. + /// + /// + /// It will be useful when we can assume that this View is... + /// - Always be existed under Layout. + /// - ResizePolicy don't need. + /// - Relayout event not used. + /// - Internal visuals and VisualObjects don't use FittingMode. + /// - Text don't need. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + Ignore, + } + + private static IntPtr NewWithAccessibilityModeAndResizePolicyMode(ViewAccessibilityMode accessibilityMode, ViewResizePolicyMode resizePolicyMode) { switch (accessibilityMode) { case ViewAccessibilityMode.Custom: { - return Interop.View.NewCustom((int)GetDefaultViewBehaviour()); + switch (resizePolicyMode) + { + case ViewResizePolicyMode.Ignore: + { + return Interop.View.NewCustom((int)GetDefaultViewBehaviour() | (int)(CustomViewBehaviour.DisableSizeNegotiation)); + } + case ViewResizePolicyMode.Default: + default: + { + return Interop.View.NewCustom((int)GetDefaultViewBehaviour()); + } + } } case ViewAccessibilityMode.Default: default: { - return Interop.View.New((int)GetDefaultViewBehaviour()); + switch (resizePolicyMode) + { + case ViewResizePolicyMode.Ignore: + { + return Interop.View.New((int)GetDefaultViewBehaviour() | (int)(CustomViewBehaviour.DisableSizeNegotiation)); + } + case ViewResizePolicyMode.Default: + default: + { + return Interop.View.New((int)GetDefaultViewBehaviour()); + } + } } } } @@ -163,9 +213,13 @@ namespace Tizen.NUI.BaseComponents } [EditorBrowsable(EditorBrowsableState.Never)] - public View(ViewAccessibilityMode accessibilityMode) : this(NewWithAccessibilityMode(accessibilityMode), true) + public View(ViewAccessibilityMode accessibilityMode) : this(accessibilityMode, ViewResizePolicyMode.Default) + { + } + + [EditorBrowsable(EditorBrowsableState.Never)] + public View(ViewResizePolicyMode resizePolicyMode) : this(ViewAccessibilityMode.Default, resizePolicyMode) { - if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// This will be public opened in next release of tizen after ACR done. Before ACR, it is used as HiddenAPI (InhouseAPI). @@ -236,6 +290,12 @@ namespace Tizen.NUI.BaseComponents } } + [EditorBrowsable(EditorBrowsableState.Never)] + internal View(ViewAccessibilityMode accessibilityMode, ViewResizePolicyMode resizePolicyMode) : this(NewWithAccessibilityModeAndResizePolicyMode(accessibilityMode, resizePolicyMode), true) + { + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + /// /// The event that is triggered when the View's ControlState is changed. ///