Supports window modality and always top functions 55/313355/6
authorWonsik Jung <sidein@samsung.com>
Mon, 24 Jun 2024 12:02:17 +0000 (21:02 +0900)
committerWonsik Jung <sidein@samsung.com>
Thu, 27 Jun 2024 11:19:38 +0000 (20:19 +0900)
Supports window modality and always top functions for specific commercial case.

Change-Id: Idce7f2750c683b37df83d320b9491f611a356215

17 files changed:
dali/devel-api/adaptor-framework/window-devel.cpp
dali/devel-api/adaptor-framework/window-devel.h
dali/internal/window-system/android/window-base-android.cpp
dali/internal/window-system/android/window-base-android.h
dali/internal/window-system/common/window-base.h
dali/internal/window-system/common/window-impl.cpp
dali/internal/window-system/common/window-impl.h
dali/internal/window-system/macos/window-base-mac.h
dali/internal/window-system/macos/window-base-mac.mm
dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.cpp
dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.h
dali/internal/window-system/ubuntu-x11/window-base-ecore-x.cpp
dali/internal/window-system/ubuntu-x11/window-base-ecore-x.h
dali/internal/window-system/windows/window-base-win.cpp
dali/internal/window-system/windows/window-base-win.h
dali/internal/window-system/x11/window-base-x.cpp
dali/internal/window-system/x11/window-base-x.h

index b41149a..cb0644e 100644 (file)
@@ -364,6 +364,26 @@ bool GetFrontBufferRendering(Window window)
   return GetImplementation(window).GetFrontBufferRendering();
 }
 
+void SetModal(Window window, bool modal)
+{
+  GetImplementation(window).SetModal(modal);
+}
+
+bool IsModal(Window window)
+{
+  return GetImplementation(window).IsModal();
+}
+
+void SetAlwaysOnTop(Window window, bool alwaysOnTop)
+{
+  GetImplementation(window).SetAlwaysOnTop(alwaysOnTop);
+}
+
+bool IsAlwaysOnTop(Window window)
+{
+  return GetImplementation(window).IsAlwaysOnTop();
+}
+
 InterceptKeyEventSignalType& InterceptKeyEventSignal(Window window)
 {
   return GetImplementation(window).InterceptKeyEventSignal();
index 7b63e0b..51de5ee 100644 (file)
@@ -449,6 +449,7 @@ DALI_ADAPTOR_API void FeedHoverEvent(Window window, const Dali::TouchPoint& poin
 
 /**
  * @brief Maximizes window's size.
+ *
  * If this function is called with true, window will be resized with screen size.
  * Otherwise window will be resized with previous size.
  * It is for the window's MAX button in window's border.
@@ -484,6 +485,7 @@ DALI_ADAPTOR_API void SetMaximumSize(Window window, Dali::Window::WindowSize siz
 
 /**
  * @brief Minimizes window's size.
+ *
  * If this function is called with true, window will be iconified.
  * Otherwise window will be activated.
  * It is for the window's MIN button in window border.
@@ -656,6 +658,38 @@ DALI_ADAPTOR_API void SetFrontBufferRendering(Window window, bool enable);
 DALI_ADAPTOR_API bool GetFrontBufferRendering(Window window);
 
 /**
+ * @brief Enables or disables the modal of window.
+ *
+ * @param[in] window The window instance.
+ * @param[in] modal true to enable the modal of window, false to disable.
+ */
+DALI_ADAPTOR_API void SetModal(Window window, bool modal);
+
+/**
+ * @brief Returns whether the window has a modal or not.
+ *
+ * @param[in] window The window instance.
+ * @return True if the window is modal, false otherwise.
+ */
+DALI_ADAPTOR_API bool IsModal(Window window);
+
+/**
+ * @brief Enables or disables the window always is on top.
+ *
+ * @param[in] window The window instance.
+ * @param[in] alwaysOnTop true to enable the window always is on top, false to disable.
+ */
+DALI_ADAPTOR_API void SetAlwaysOnTop(Window window, bool alwaysOnTop);
+
+/**
+ * @brief Returns whether the window always is on top.
+ *
+ * @param[in] window The window instance.
+ * @return True if the window always is on top, false otherwise.
+ */
+DALI_ADAPTOR_API bool IsAlwaysOnTop(Window window);
+
+/**
  * @brief The user would connect to this signal to intercept a KeyEvent at window.
  *
  * Intercepts KeyEvents in the window before dispatching KeyEvents to the control.
index 0d1e69d..3724874 100644 (file)
@@ -495,6 +495,24 @@ void WindowBaseAndroid::SetEglWindowFrontBufferMode(bool enable)
 {
 }
 
+void WindowBaseAndroid::SetModal(bool modal)
+{
+}
+
+bool WindowBaseAndroid::IsModal()
+{
+  return false;
+}
+
+void WindowBaseAndroid::SetAlwaysOnTop(bool alwaysOnTop)
+{
+}
+
+bool WindowBaseAndroid::IsAlwaysOnTop()
+{
+  return false;
+}
+
 } // namespace Adaptor
 
 } // namespace Internal
index 3e92ba6..8db9478 100644 (file)
@@ -519,6 +519,26 @@ public:
    */
   void SetEglWindowFrontBufferMode(bool enable) override;
 
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::SetModal()
+   */
+  void SetModal(bool modal) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::IsModal()
+   */
+  bool IsModal() override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::SetAlwaysOnTop()
+   */
+  void SetAlwaysOnTop(bool alwaysOnTop) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::IsAlwaysOnTop()
+   */
+  bool IsAlwaysOnTop() override;
+
 private:
   /**
    * Second stage initialization
index c46ff17..b7d0ee7 100644 (file)
@@ -566,6 +566,34 @@ public:
    */
   virtual void SetEglWindowFrontBufferMode(bool enable) = 0;
 
+  /**
+   * @brief Enables or disables the modal of window.
+   *
+   * @param[in] modal true to enable the modal of window, false to disable.
+   */
+  virtual void SetModal(bool modal) = 0;
+
+  /**
+   * @brief Returns whether the window has a modal or not.
+   *
+   * @return True if the window is modal, false otherwise.
+   */
+  virtual bool IsModal() = 0;
+
+  /**
+   * @brief Enables or disables the window always is on top.
+   *
+   * @param[in] alwaysOnTop true to enable the window always is on top, false to disable.
+   */
+  virtual void SetAlwaysOnTop(bool alwaysOnTop) = 0;
+
+  /**
+   * @brief Returns whether the window always is on top.
+   *
+   * @return True if the window always is on top, false otherwise.
+   */
+  virtual bool IsAlwaysOnTop() = 0;
+
   // Signals
 
   /**
index 69e365f..9c3d9a2 100644 (file)
@@ -1581,6 +1581,27 @@ bool Window::GetFrontBufferRendering()
   return mWindowBase->GetFrontBufferRendering();
 }
 
+void Window::SetModal(bool modal)
+{
+  mWindowBase->SetModal(modal);
+}
+
+bool Window::IsModal()
+{
+  return mWindowBase->IsModal();
+}
+
+void Window::SetAlwaysOnTop(bool alwaysOnTop)
+{
+  mWindowBase->SetAlwaysOnTop(alwaysOnTop);
+}
+
+bool Window::IsAlwaysOnTop()
+{
+  return mWindowBase->IsAlwaysOnTop();
+}
+
+
 } // namespace Adaptor
 
 } // namespace Internal
index b0298a3..19116a1 100644 (file)
@@ -582,6 +582,26 @@ public: // Dali::Internal::Adaptor::SceneHolder
    */
   bool GetFrontBufferRendering();
 
+  /**
+   * @copydoc Dali::DevelWindow::SetModal()
+   */
+  void SetModal(bool modal);
+
+  /**
+   * @copydoc Dali::DevelWindow::IsModal()
+   */
+  bool IsModal();
+
+  /**
+   * @copydoc Dali::DevelWindow::SetAlwaysOnTop()
+   */
+  void SetAlwaysOnTop(bool alwaysOnTop);
+
+  /**
+   * @copydoc Dali::DevelWindow::IsAlwaysOnTop()
+   */
+  bool IsAlwaysOnTop();
+
 private:
   /**
    * @brief Enumeration for orietation mode.
index 640d527..4833180 100644 (file)
@@ -448,6 +448,26 @@ public:
   bool GetFrontBufferRendering() override;
 
   /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::SetModal()
+   */
+  void SetModal(bool modal) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::IsModal()
+   */
+  bool IsModal() override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::SetAlwaysOnTop()
+   */
+  void SetAlwaysOnTop(bool alwaysOnTop) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::IsAlwaysOnTop()
+   */
+  bool IsAlwaysOnTop() override;
+
+  /**
    * @brief Sets front buffer rendering to the egl window.
    * @param[in] enable True to enable front buffer rendering mode, False to otherwise.
    */
index 1a1f24c..ed6b12d 100644 (file)
@@ -806,6 +806,24 @@ void WindowBaseCocoa::SetEglWindowFrontBufferMode(bool enable)
 {
 }
 
+void WindowBaseCocoa::SetModal(bool modal)
+{
+}
+
+bool WindowBaseCocoa::IsModal()
+{
+  return false;
+}
+
+void WindowBaseCocoa::SetAlwaysOnTop(bool alwaysOnTop)
+{
+}
+
+bool WindowBaseCocoa::IsAlwaysOnTop()
+{
+  return false;
+}
+
 } // namespace Dali::Internal::Adaptor
 
 @implementation CocoaView
index cfa6b9d..2c19579 100644 (file)
@@ -3669,6 +3669,36 @@ void WindowBaseEcoreWl2::SetEglWindowFrontBufferMode(bool enable)
   wl_egl_window_tizen_set_frontbuffer_mode(mEglWindow, enable);
 }
 
+void WindowBaseEcoreWl2::SetModal(bool modal)
+{
+  DALI_LOG_RELEASE_INFO("ecore_wl2_window_modal_set, window: [%p], flag [%d]\n", mEcoreWindow, modal);
+  START_DURATION_CHECK();
+  ecore_wl2_window_modal_set(mEcoreWindow, modal);
+  FINISH_DURATION_CHECK("ecore_wl2_window_modal_set");
+}
+
+bool WindowBaseEcoreWl2::IsModal()
+{
+  bool ret = ecore_wl2_window_modal_get(mEcoreWindow);
+  DALI_LOG_RELEASE_INFO("ecore_wl2_window_modal_get, window: [%p], flag [%d]\n", mEcoreWindow, ret);
+  return ret;
+}
+
+void WindowBaseEcoreWl2::SetAlwaysOnTop(bool alwaysOnTop)
+{
+  DALI_LOG_RELEASE_INFO("ecore_wl2_window_pin_mode_set, window: [%p], flag [%d]\n", mEcoreWindow, alwaysOnTop);
+  START_DURATION_CHECK();
+  ecore_wl2_window_pin_mode_set(mEcoreWindow, alwaysOnTop);
+  FINISH_DURATION_CHECK("ecore_wl2_window_pin_mode_set");
+}
+
+bool WindowBaseEcoreWl2::IsAlwaysOnTop()
+{
+  bool ret = ecore_wl2_window_pin_mode_get(mEcoreWindow);
+  DALI_LOG_RELEASE_INFO("ecore_wl2_window_pin_mode_get, window: [%p], flag [%d]\n", mEcoreWindow, ret);
+  return ret;
+}
+
 } // namespace Adaptor
 
 } // namespace Internal
index 1f0bbba..d7e56a6 100644 (file)
@@ -661,6 +661,26 @@ public:
    */
   void SetEglWindowFrontBufferMode(bool enable) override;
 
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::SetModal()
+   */
+  void SetModal(bool modal) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::IsModal()
+   */
+  bool IsModal() override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::SetAlwaysOnTop()
+   */
+  void SetAlwaysOnTop(bool alwaysOnTop) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::IsAlwaysOnTop()
+   */
+  bool IsAlwaysOnTop() override;
+
 private:
   /**
    * Second stage initialization
index c030877..631a79a 100644 (file)
@@ -1090,6 +1090,24 @@ void WindowBaseEcoreX::SetEglWindowFrontBufferMode(bool enable)
 {
 }
 
+void WindowBaseEcoreX::SetModal(bool modal)
+{
+}
+
+bool WindowBaseEcoreX::IsModal()
+{
+  return false;
+}
+
+void WindowBaseEcoreX::SetAlwaysOnTop(bool alwaysOnTop)
+{
+}
+
+bool WindowBaseEcoreX::IsAlwaysOnTop()
+{
+  return false;
+}
+
 } // namespace Adaptor
 
 } // namespace Internal
index f705111..650f474 100644 (file)
@@ -524,6 +524,26 @@ public:
    */
   void SetEglWindowFrontBufferMode(bool enable) override;
 
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::SetModal()
+   */
+  void SetModal(bool modal) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::IsModal()
+   */
+  bool IsModal() override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::SetAlwaysOnTop()
+   */
+  void SetAlwaysOnTop(bool alwaysOnTop) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::IsAlwaysOnTop()
+   */
+  bool IsAlwaysOnTop() override;
+
 private:
   /**
    * Second stage initialization
index 19e9cea..08c8c4d 100644 (file)
@@ -725,6 +725,24 @@ void WindowBaseWin::SetEglWindowFrontBufferMode(bool enable)
 {
 }
 
+void WindowBaseWin::SetModal(bool modal)
+{
+}
+
+bool WindowBaseWin::IsModal()
+{
+  return false;
+}
+
+void WindowBaseWin::SetAlwaysOnTop(bool alwaysOnTop)
+{
+}
+
+bool WindowBaseWin::IsAlwaysOnTop()
+{
+  return false;
+}
+
 } // namespace Adaptor
 
 } // namespace Internal
index d05f89c..f7945c7 100644 (file)
@@ -506,6 +506,26 @@ public:
    */
   void SetEglWindowFrontBufferMode(bool enable) override;
 
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::SetModal()
+   */
+  void SetModal(bool modal) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::IsModal()
+   */
+  bool IsModal() override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::SetAlwaysOnTop()
+   */
+  void SetAlwaysOnTop(bool alwaysOnTop) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::IsAlwaysOnTop()
+   */
+  bool IsAlwaysOnTop() override;
+
 private:
   /**
    * Second stage initialization
index e5fdce2..a9a282c 100644 (file)
@@ -1024,6 +1024,23 @@ bool WindowBaseX::GetFrontBufferRendering()
 void WindowBaseX::SetEglWindowFrontBufferMode(bool enable)
 {
 }
+void WindowBaseWin::SetModal(bool modal)
+{
+}
+
+bool WindowBaseWin::IsModal()
+{
+  return false;
+}
+
+void WindowBaseWin::SetAlwaysOnTop(bool alwaysOnTop)
+{
+}
+
+bool WindowBaseWin::IsAlwaysOnTop()
+{
+  return false;
+}
 
 } // namespace Adaptor
 
index cec66a3..69799d7 100644 (file)
@@ -528,6 +528,26 @@ public:
    */
   void SetEglWindowFrontBufferMode(bool enable) override;
 
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::SetModal()
+   */
+  void SetModal(bool modal) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::IsModal()
+   */
+  bool IsModal() override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::SetAlwaysOnTop()
+   */
+  void SetAlwaysOnTop(bool alwaysOnTop) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::IsAlwaysOnTop()
+   */
+  bool IsAlwaysOnTop() override;
+
 private:
   /**
    * Second stage initialization