From 5f4496ead063fcb1bdcd7e218e777407bc018fa3 Mon Sep 17 00:00:00 2001 From: Wonsik Jung Date: Tue, 4 Oct 2022 11:28:47 +0900 Subject: [PATCH] [Tizen] Modify window position data type Current WindowPosition has the unsigned int data type. It means that current data type can not support the negative coordinate. This patch is to support it. Change-Id: I3c640727366600b6c463b7dbd287663e427014bc --- .../src/dali-adaptor/utc-Dali-Window.cpp | 2 +- dali/devel-api/adaptor-framework/window-devel.h | 4 +- dali/internal/window-system/common/window-impl.cpp | 13 +++- dali/public-api/adaptor-framework/window.cpp | 4 +- dali/public-api/adaptor-framework/window.h | 87 +++++++++++++++++++++- 5 files changed, 103 insertions(+), 7 deletions(-) diff --git a/automated-tests/src/dali-adaptor/utc-Dali-Window.cpp b/automated-tests/src/dali-adaptor/utc-Dali-Window.cpp index db45460..1873913 100644 --- a/automated-tests/src/dali-adaptor/utc-Dali-Window.cpp +++ b/automated-tests/src/dali-adaptor/utc-Dali-Window.cpp @@ -445,7 +445,7 @@ int UtcDaliWindowSetPositionNegative(void) Dali::Window instance; try { - Dali::Uint16Pair arg1; + Dali::Window::WindowPosition arg1; instance.SetPosition(arg1); DALI_TEST_CHECK(false); // Should not get here } diff --git a/dali/devel-api/adaptor-framework/window-devel.h b/dali/devel-api/adaptor-framework/window-devel.h index 6a64084..9b5647a 100644 --- a/dali/devel-api/adaptor-framework/window-devel.h +++ b/dali/devel-api/adaptor-framework/window-devel.h @@ -46,7 +46,7 @@ typedef Signal typedef Signal AuxiliaryMessageSignalType; ///< Auxiliary message signal type typedef Signal AccessibilityHighlightSignalType; ///< Accessibility Highlight signal type typedef Signal InterceptKeyEventSignalType; ///< Intercept Key event signal type -typedef Signal MovedSignalType; ///< Window Moved signal type +typedef Signal MovedSignalType; ///< Window Moved signal type /** * @brief Creates an initialized handle to a new Window. @@ -538,7 +538,7 @@ DALI_ADAPTOR_API InterceptKeyEventSignalType& InterceptKeyEventSignal(Window win * * A callback of the following type may be connected: * @code - * void YourCallbackName( Window window, Uint16Pair position ); + * void YourCallbackName( Window window, Dali::Window::WindowPosition position ); * @endcode * The parameters are the moved x and y coordinates. * and window means this signal was called from what window diff --git a/dali/internal/window-system/common/window-impl.cpp b/dali/internal/window-system/common/window-impl.cpp index 67bf27c..5d4cb1c 100644 --- a/dali/internal/window-system/common/window-impl.cpp +++ b/dali/internal/window-system/common/window-impl.cpp @@ -699,8 +699,19 @@ Dali::Window::WindowSize Window::GetSize() const void Window::SetPosition(Dali::Window::WindowPosition position) { PositionSize oldRect = mSurface->GetPositionSize(); + int32_t newX = position.GetX(); + int32_t newY = position.GetY(); - mWindowSurface->MoveResize(PositionSize(position.GetX(), position.GetY(), oldRect.width, oldRect.height)); + mWindowSurface->MoveResize(PositionSize(newX, newY, oldRect.width, oldRect.height)); + + if((oldRect.x != newX) || (oldRect.y != newY)) + { + Dali::Window handle(this); + Dali::Window::WindowPosition newPosition(newX, newY); + + DALI_LOG_RELEASE_INFO("send moved signal with new position: %d, %d\n", newPosition.GetX(), newPosition.GetY()); + mMovedSignal.Emit(handle, newPosition); + } mSurface->SetFullSwapNextFrame(); diff --git a/dali/public-api/adaptor-framework/window.cpp b/dali/public-api/adaptor-framework/window.cpp index edb98e0..e1f2642 100644 --- a/dali/public-api/adaptor-framework/window.cpp +++ b/dali/public-api/adaptor-framework/window.cpp @@ -303,12 +303,12 @@ Window::WindowSize Window::GetSize() const return GetImplementation(*this).GetSize(); } -void Window::SetPosition(Window::WindowPosition position) +void Window::SetPosition(Dali::Window::WindowPosition position) { GetImplementation(*this).SetPosition(position); } -Window::WindowPosition Window::GetPosition() const +Dali::Window::WindowPosition Window::GetPosition() const { return GetImplementation(*this).GetPosition(); } diff --git a/dali/public-api/adaptor-framework/window.h b/dali/public-api/adaptor-framework/window.h index e0c8d34..36488f0 100644 --- a/dali/public-api/adaptor-framework/window.h +++ b/dali/public-api/adaptor-framework/window.h @@ -70,8 +70,93 @@ class KeyEvent; class DALI_ADAPTOR_API Window : public BaseHandle { public: + /** + * @brief Simple class for window position pairs of integers. + * + * Use this for integer position with window coordinates. + * @SINCE_2_1.43 + */ + class IntPair + { + public: + /** + * @brief Default constructor, initialises to 0. + * @SINCE_2_1.43 + */ + IntPair() + : mX(0), + mY(0) + { + }; + + /** + * @brief Constructor taking separate x and y parameters. + * @SINCE_2_1.43 + * @param[in] x The X coordinate of the window. + * @param[in] y The Y coordinate of the window. + */ + IntPair(int32_t x, int32_t y) + { + mX = x; + mY = y; + } + + /** + * @brief Returns the x coordinate. + * @SINCE_2_1.43 + * @return Y + */ + int32_t GetX() const + { + return mX; + } + + /** + * @brief Returns the y coordinate. + * @SINCE_2_1.43 + * @return Y + */ + int32_t GetY() const + { + return mY; + } + + /** + * @brief Sets the x coordinate + * @SINCE_2_1.43 + * @param[in] x the x coordinate value + */ + void SetX(int32_t x) + { + mX = x; + } + + /** + * @brief Sets the y coordinate + * @SINCE_2_1.43 + * @param[in] y the y coordinate value + */ + void SetY(int32_t y) + { + mY = y; + } + + // Default operation + public: + IntPair(const IntPair&) = default; ///< Default copy constructor + IntPair(IntPair&&) = default; ///< Default move constructor + IntPair& operator=(const IntPair&) = default; ///< Default copy assignment operator + IntPair& operator=(IntPair&&) = default; ///< Default move assignment operator + + // member data + private: + int32_t mX; + int32_t mY; + }; + +public: using WindowSize = Uint16Pair; ///< Window size type @SINCE_1_2.60 - using WindowPosition = Uint16Pair; ///< Window position type @SINCE_1_2.60 + using WindowPosition = IntPair; ///< Window position type @SINCE_2_1.43 using FocusChangeSignalType = Signal; ///< Window focus signal type @SINCE_1_4.35 using ResizeSignalType = Signal; ///< Window resized signal type @SINCE_1_4.35 -- 2.7.4