From 44d24a56c9443bf0eddb00ab5ee1349ad548eb1c Mon Sep 17 00:00:00 2001 From: "joogab.yun" Date: Mon, 10 Jul 2023 19:50:03 +0900 Subject: [PATCH] [NUI] Register OrientationChanged for BorderWindow. Because if the window is rotated, we need to resize the window by recalculating the border area. --- .../src/public/Window/BorderWindow.cs | 31 +++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/src/Tizen.NUI/src/public/Window/BorderWindow.cs b/src/Tizen.NUI/src/public/Window/BorderWindow.cs index f07279d13b4..3cb9f7e5857 100755 --- a/src/Tizen.NUI/src/public/Window/BorderWindow.cs +++ b/src/Tizen.NUI/src/public/Window/BorderWindow.cs @@ -35,6 +35,7 @@ public partial class Window private IBorderInterface borderInterface = null; private Layer borderWindowRootLayer = null; private Layer borderWindowBottomLayer = null; + private WindowOrientation currentOrientation; // for border area private View rootView = null; @@ -186,14 +187,14 @@ internal void UpdateProperty() SetMimimumSize(mimimumSize); minSize = borderInterface.MinSize; } - + if (maxSize != borderInterface.MaxSize || (borderInterface.MaxSize != null && isNeedResizeByLine == true)) { using Size2D maximumSize = new Size2D((borderInterface.MaxSize?.Width + (int)borderLineThickness * 2 ?? 0), (borderInterface.MaxSize?.Height ?? 0) + (int)(borderHeight + borderLineThickness * 2)); SetMaximumSize(maximumSize); maxSize = borderInterface.MaxSize; } - + if (borderResizePolicy != borderInterface.ResizePolicy) { AddAuxiliaryHint("wm.policy.win.resize_aspect_ratio", "0"); @@ -203,7 +204,7 @@ internal void UpdateProperty() AddAuxiliaryHint("wm.policy.win.resize_aspect_ratio", "1"); } } - + } } /// @@ -261,6 +262,10 @@ internal bool EnableBorder(IBorderInterface borderInterface, BorderCloseDelegate if (CreateBorder() == true) { + Tizen.Log.Info("NUI", $"currentOrientation {currentOrientation}\n"); + currentOrientation = GetCurrentOrientation(); + currentOrientation = (currentOrientation == WindowOrientation.Portrait || currentOrientation == WindowOrientation.PortraitInverse) ? WindowOrientation.Portrait : WindowOrientation.Landscape; + using var realWindowSize = new Size2D(WindowSize.Width, WindowSize.Height); isBorderWindow = true; @@ -269,6 +274,8 @@ internal bool EnableBorder(IBorderInterface borderInterface, BorderCloseDelegate Moved += OnBorderWindowMoved; + OrientationChanged += OnBorderWindowOrientationChanged; + borderInterface.OnCreated(borderView); // Increase the window size as much as the border area. @@ -536,6 +543,22 @@ private void OnBorderWindowMoved(object sender, WindowMovedEventArgs e) borderInterface.OnMoved(e.WindowPosition.X, e.WindowPosition.X); } + private void OnBorderWindowOrientationChanged(object sender, WindowOrientationChangedEventArgs e) + { + WindowOrientation orientation = e.WindowOrientation; + orientation = (orientation == WindowOrientation.Portrait || orientation == WindowOrientation.PortraitInverse) ? WindowOrientation.Portrait : WindowOrientation.Landscape; + if (currentOrientation != orientation) + { + if (isEnabledOverlayMode == false && IsFloatingModeEnabled() == false) + { + using var val = new Uint16Pair(Interop.Window.GetSize(SwigCPtr), true); + Tizen.Log.Info("NUI", $"OnBorderWindowOrientationChanged {e.WindowOrientation} {val.GetWidth()},{val.GetHeight()}\n"); + uint borderLine = borderLineThickness * 2; + WindowSize = new Size2D((int)(val.GetWidth() - borderHeight - borderLine), (int)(val.GetHeight() - borderLine)); + } + } + currentOrientation = orientation; + } // Called when the window size has changed. private void OnBorderWindowResized(object sender, Window.ResizedEventArgs e) @@ -625,6 +648,8 @@ internal void DisposeBorder() { Resized -= OnBorderWindowResized; FocusChanged -= OnWindowFocusChanged; + Moved -= OnBorderWindowMoved; + OrientationChanged -= OnBorderWindowOrientationChanged; borderInterface.Dispose(); GetBorderWindowBottomLayer().Dispose(); }