From: Jaehyun Cho Date: Mon, 10 Jan 2022 11:33:36 +0000 (+0900) Subject: [NUI] Support Layout for Multi-Window X-Git-Tag: accepted/tizen/unified/20231205.024657~1219 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=356555f69344bbd1151b18c2950ac387beda5737;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git [NUI] Support Layout for Multi-Window Previously, Layouts in the default Window were supported. Now, to support Layout in Multi-Window, Layouts in all Windows are supported. --- diff --git a/src/Tizen.NUI/src/public/BaseComponents/ViewInternal.cs b/src/Tizen.NUI/src/public/BaseComponents/ViewInternal.cs index d154a4b..9df1143 100755 --- a/src/Tizen.NUI/src/public/BaseComponents/ViewInternal.cs +++ b/src/Tizen.NUI/src/public/BaseComponents/ViewInternal.cs @@ -189,7 +189,7 @@ namespace Tizen.NUI.BaseComponents internal void SetLayout(LayoutItem layout) { - Window.Instance.LayoutController.CreateProcessCallback(); + Window.Get(this)?.LayoutController.CreateProcessCallback(); this.layout = layout; this.layout?.AttachToOwner(this); this.layout?.RequestLayout(); diff --git a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/MultiWindowLayoutSample.cs b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/MultiWindowLayoutSample.cs new file mode 100644 index 0000000..aee747a --- /dev/null +++ b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/MultiWindowLayoutSample.cs @@ -0,0 +1,98 @@ +using Tizen.NUI.BaseComponents; +using Tizen.NUI.Components; + +namespace Tizen.NUI.Samples +{ + public class MultiWindowLayoutSample : IExample + { + private Window mainWindow = null; + private Window subWindow = null; + private View mainView = null; + private View subView = null; + + public void Activate() + { + mainWindow = NUIApplication.GetDefaultWindow(); + + mainView = new View() + { + Layout = new LinearLayout(), + WidthSpecification = LayoutParamPolicies.MatchParent, + HeightSpecification = LayoutParamPolicies.MatchParent, + BackgroundColor = Color.White + }; + mainWindow.Add(mainView); + + var mainChild = new View() + { + WidthSpecification = LayoutParamPolicies.MatchParent, + HeightSpecification = LayoutParamPolicies.MatchParent, + BackgroundColor = Color.Red + }; + mainView.Add(mainChild); + + var mainChild2 = new View() + { + WidthSpecification = LayoutParamPolicies.MatchParent, + HeightSpecification = LayoutParamPolicies.MatchParent, + BackgroundColor = Color.Yellow + }; + mainView.Add(mainChild2); + + subWindow = new Window(); + + subView = new View() + { + Layout = new LinearLayout(), + WidthSpecification = LayoutParamPolicies.MatchParent, + HeightSpecification = LayoutParamPolicies.MatchParent, + BackgroundColor = Color.White + }; + subWindow.Add(subView); + + var subChild = new View() + { + WidthSpecification = LayoutParamPolicies.MatchParent, + HeightSpecification = LayoutParamPolicies.MatchParent, + BackgroundColor = Color.Green + }; + subView.Add(subChild); + + var subChild2 = new View() + { + WidthSpecification = LayoutParamPolicies.MatchParent, + HeightSpecification = LayoutParamPolicies.MatchParent, + BackgroundColor = Color.Blue + }; + subView.Add(subChild2); + } + + public void Deactivate() + { + if (subWindow != null) + { + if (subView != null) + { + subWindow.Remove(subView); + subView.Dispose(); + subView = null; + } + + subWindow.Dispose(); + subWindow = null; + } + + if (mainWindow != null) + { + if (mainView != null) + { + mainWindow.Remove(mainView); + mainView.Dispose(); + mainView = null; + } + + mainWindow = null; + } + } + } +}