Add ecore api about RelativeMove 68/296968/9
authorjoogab.yun <joogab.yun@samsung.com>
Wed, 31 May 2023 05:21:47 +0000 (14:21 +0900)
committerjoogab.yun <joogab.yun@samsung.com>
Mon, 14 Aug 2023 00:47:52 +0000 (09:47 +0900)
1. ecore_wl2_window_pointer_constraints_lock_pointer
2. ecore_wl2_window_pointer_constraints_unlock_pointer
3. ecore_wl2_window_locked_pointer_region_set
4. ecore_wl2_window_locked_pointer_cursor_position_hint_set
5. ECORE_EVENT_MOUSE_RELATIVE_MOVE

Change-Id: I612c7f358e0aeb093d5ec6b92771a150094a42d6

22 files changed:
automated-tests/src/dali-adaptor/utc-Dali-Window.cpp
dali/devel-api/adaptor-framework/mouse-relative-event.h [new file with mode: 0644]
dali/devel-api/adaptor-framework/window-devel.cpp
dali/devel-api/adaptor-framework/window-devel.h
dali/devel-api/file.list
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.cpp
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-wl/window-base-ecore-wl.h
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 f224d97..cd0c8e5 100644 (file)
@@ -1608,6 +1608,21 @@ int UtcDaliWindowMouseInOutSignalNegative(void)
   END_TEST;
 }
 
+int UtcDaliWindowMouseRelativeSignalNegative(void)
+{
+  Dali::Window instance;
+  try
+  {
+    DevelWindow::MouseRelativeEventSignal(instance);
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
 int UtcDaliWindowMoveCompletedSignalNegative(void)
 {
   Dali::Window instance;
diff --git a/dali/devel-api/adaptor-framework/mouse-relative-event.h b/dali/devel-api/adaptor-framework/mouse-relative-event.h
new file mode 100644 (file)
index 0000000..c368c5e
--- /dev/null
@@ -0,0 +1,79 @@
+#ifndef DALI_WINDOW_DEVEL_MOUSE_RELATIVE_EVENT_H
+#define DALI_WINDOW_DEVEL_MOUSE_RELATIVE_EVENT_H
+
+/*
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// EXTERNAL INCLUDES
+#include <dali/public-api/events/device.h>
+#include <dali/public-api/math/vector2.h>
+
+// INTERNAL INCLUDES
+#include <dali/public-api/dali-adaptor-common.h>
+
+namespace Dali
+{
+namespace DevelWindow
+{
+/**
+ * @brief MouseRelativeEvent occurs when relative mouse movement occurs in the window.
+ *
+ * A signal is emitted when relative mouse movement occurs in the window.
+ */
+struct DALI_ADAPTOR_API MouseRelativeEvent
+{
+  enum class Type
+  {
+    NONE = 0,
+    RELATIVE_MOVE
+  };
+
+  /**
+   * @brief Constructor which creates a MouseRelativeEvent instance
+   * @param[in] type The type of the event.
+   * @param[in] modifiers The modifier keys pressed during the event (such as shift, alt and control).
+   * @param[in] timeStamp The time when the event being started.
+   * @param[in] diffPosition The co-ordinates of the cursor relative to the top-left of the screen
+   * @param[in] unaccelatedPosition The co-ordinates of the cursor relative to the top-left of the screen
+   * @param[in] deviceClass The device class the event originated from.
+   * @param[in] deviceSubclass The device subclass the event originated from.
+   */
+  MouseRelativeEvent(Type type, uint32_t modifiers, uint32_t timeStamp, Vector2 diffPosition, Vector2 unaccelatedPosition, const Device::Class::Type deviceClass, const Device::Subclass::Type deviceSubclass)
+  : type(type),
+    modifiers(modifiers),
+    timeStamp(timeStamp),
+    diffPosition(diffPosition),
+    unaccelatedPosition(unaccelatedPosition),
+    deviceClass(deviceClass),
+    deviceSubclass(deviceSubclass)
+  {
+  }
+
+  Type                         type;
+  uint32_t                     modifiers;
+  uint32_t                     timeStamp;
+  Vector2                      diffPosition;
+  Vector2                      unaccelatedPosition;
+  const Device::Class::Type    deviceClass;
+  const Device::Subclass::Type deviceSubclass;
+};
+
+} // namespace DevelWindow
+
+} // namespace Dali
+
+#endif // DALI_WINDOW_DEVEL_MOUSE_RELATIVE_EVENT_H
index 3fab555..ef0847e 100644 (file)
@@ -299,6 +299,31 @@ const TouchEvent& GetLastTouchEvent(Window window)
   return GetImplementation(window).GetLastTouchEvent();
 }
 
+bool PointerConstraintsLock(Window window)
+{
+  return GetImplementation(window).PointerConstraintsLock();
+}
+
+bool PointerConstraintsUnlock(Window window)
+{
+  return GetImplementation(window).PointerConstraintsUnlock();
+}
+
+void LockedPointerRegionSet(Window window, int32_t x, int32_t y, int32_t width, int32_t height)
+{
+  GetImplementation(window).LockedPointerRegionSet(x, y, width, height);
+}
+
+void LockedPointerCursorPositionHintSet(Window window, int32_t x, int32_t y)
+{
+  GetImplementation(window).LockedPointerCursorPositionHintSet(x, y);
+}
+
+bool PointerWarp(Window window, int32_t x, int32_t y)
+{
+  return GetImplementation(window).PointerWarp(x, y);
+}
+
 InterceptKeyEventSignalType& InterceptKeyEventSignal(Window window)
 {
   return GetImplementation(window).InterceptKeyEventSignal();
@@ -314,6 +339,11 @@ InsetsChangedSignalType& InsetsChangedSignal(Window window)
   return GetImplementation(window).InsetsChangedSignal();
 }
 
+MouseRelativeEventSignalType& MouseRelativeEventSignal(Window window)
+{
+  return GetImplementation(window).MouseRelativeEventSignal();
+}
+
 } // namespace DevelWindow
 
 } // namespace Dali
index 287005a..979fcc7 100644 (file)
@@ -23,6 +23,7 @@
 
 // INTERNAL INCLUDES
 #include <dali/devel-api/adaptor-framework/mouse-in-out-event.h>
+#include <dali/devel-api/adaptor-framework/mouse-relative-event.h>
 #include <dali/public-api/adaptor-framework/window-enumerations.h>
 #include <dali/public-api/adaptor-framework/window.h>
 #include <dali/public-api/common/vector-wrapper.h>
@@ -50,6 +51,7 @@ typedef Signal<bool(const KeyEvent&)>
 typedef Signal<void(Window, Dali::Window::WindowPosition)>                           MovedSignalType;                         ///< Window Moved signal type
 typedef Signal<void(Window, Dali::WindowOrientation)>                                OrientationChangedSignalType;            ///< Window orientation changed signal type
 typedef Signal<void(Window, const Dali::DevelWindow::MouseInOutEvent&)>              MouseInOutEventSignalType;               ///< MouseInOutEvent signal type
+typedef Signal<void(Window, const Dali::DevelWindow::MouseRelativeEvent&)>           MouseRelativeEventSignalType;            ///< MouseRelativeEvent signal type
 typedef Signal<void(Window, Dali::Window::WindowPosition)>                           MoveCompletedSignalType;                 ///< Window Moved by Server signal type
 typedef Signal<void(Window, Dali::Window::WindowSize)>                               ResizeCompletedSignalType;               ///< Window Resized by Server signal type
 typedef Signal<void(WindowInsetsPartType, WindowInsetsPartState, const Extents&)>    InsetsChangedSignalType;                 ///< InsetsChanged signal type
@@ -536,6 +538,52 @@ DALI_ADAPTOR_API const KeyEvent& GetLastKeyEvent(Window window);
 DALI_ADAPTOR_API const TouchEvent& GetLastTouchEvent(Window window);
 
 /**
+ * @brief Sets the pointer constraints lock.
+ *
+ * @param[in] window The window instance.
+ * @return Returns true if PointerConstraintsLock succeeds.
+ */
+DALI_ADAPTOR_API bool PointerConstraintsLock(Window window);
+
+/**
+ * @brief Sets the pointer constraints unlock.
+ *
+ * @param[in] window The window instance.
+ * @return Returns true if PointerConstraintsUnlock succeeds.
+ */
+DALI_ADAPTOR_API bool PointerConstraintsUnlock(Window window);
+
+/**
+ * @brief Sets the locked pointer region
+ *
+ * @param[in] window The window instance.
+ * @param[in] x The x position.
+ * @param[in] y The y position.
+ * @param[in] width The width.
+ * @param[in] height The height
+ */
+DALI_ADAPTOR_API void LockedPointerRegionSet(Window window, int32_t x, int32_t y, int32_t width, int32_t height);
+
+/**
+ * @brief Sets the locked pointer cursor position hintset
+ *
+ * @param[in] window The window instance.
+ * @param[in] x The x position.
+ * @param[in] y The y position.
+ */
+DALI_ADAPTOR_API void LockedPointerCursorPositionHintSet(Window window, int32_t x, int32_t y);
+
+/**
+ * @brief Sets the pointer warp. The pointer moves to the set coordinates.
+ *
+ * @param[in] window The window instance.
+ * @param[in] x The x position.
+ * @param[in] y The y position.
+ * @return Returns true if PointerWarp succeeds.
+ */
+DALI_ADAPTOR_API bool PointerWarp(Window window, int32_t x, int32_t y);
+
+/**
  * @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.
@@ -593,6 +641,19 @@ DALI_ADAPTOR_API OrientationChangedSignalType& OrientationChangedSignal(Window w
 DALI_ADAPTOR_API MouseInOutEventSignalType& MouseInOutEventSignal(Window window);
 
 /**
+ * @brief This signal is emitted when the mouse relative event is received.
+ *
+ * A callback of the following type may be connected:
+ * @code
+ *   void YourCallbackName( Window window, Dali::MouseRelativeEvent event );
+ * @endcode
+ *
+ * @param[in] window The window instance.
+ * @return The signal to connect to
+ */
+DALI_ADAPTOR_API MouseRelativeEventSignalType& MouseRelativeEventSignal(Window window);
+
+/**
  * @brief This signal is emitted when window has been moved by the display server.
  * To make the window move by display server, RequestMoveToServer() should be called.
  * After the moving job is completed, this function will be called.
index ed878ce..a6829f1 100755 (executable)
@@ -86,6 +86,7 @@ SET( devel_api_adaptor_framework_header_files
   ${adaptor_devel_api_dir}/adaptor-framework/keyboard.h
   ${adaptor_devel_api_dir}/adaptor-framework/lifecycle-controller.h
   ${adaptor_devel_api_dir}/adaptor-framework/mouse-in-out-event.h
+  ${adaptor_devel_api_dir}/adaptor-framework/mouse-relative-event.h
   ${adaptor_devel_api_dir}/adaptor-framework/native-image-source-devel.h
   ${adaptor_devel_api_dir}/adaptor-framework/native-image-source-queue.h
   ${adaptor_devel_api_dir}/adaptor-framework/orientation.h
index 8a83136..6c975b2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -432,6 +432,29 @@ void WindowBaseAndroid::ExcludeInputRegion(const Rect<int>& inputRegion)
 {
 }
 
+bool WindowBaseAndroid::PointerConstraintsLock()
+{
+  return false;
+}
+
+bool WindowBaseAndroid::PointerConstraintsUnlock()
+{
+  return false;
+}
+
+void WindowBaseAndroid::LockedPointerRegionSet(int32_t x, int32_t y, int32_t width, int32_t height)
+{
+}
+
+void WindowBaseAndroid::LockedPointerCursorPositionHintSet(int32_t x, int32_t y)
+{
+}
+
+bool WindowBaseAndroid::PointerWarp(int32_t x, int32_t y)
+{
+  return false;
+}
+
 } // namespace Adaptor
 
 } // namespace Internal
index 1f6463d..2978d18 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_INTERNAL_WINDOWSYSTEM_ANDROID_WINDOW_BASE_ANDROID_H
 
 /*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -178,7 +178,7 @@ public:
    */
   void MoveResize(PositionSize positionSize) override;
 
- /**
 /**
    * @copydoc Dali::Internal::Adaptor::WindowBase::SetLayout()
    */
   void SetLayout(unsigned int numCols, unsigned int numRows, unsigned int column, unsigned int row, unsigned int colSpan, unsigned int rowSpan) override;
@@ -454,6 +454,31 @@ public:
    */
   void ExcludeInputRegion(const Rect<int>& inputRegion) override;
 
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::PointerConstraintsLock()
+   */
+  bool PointerConstraintsLock() override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::PointerConstraintsUnlock()
+   */
+  bool PointerConstraintsUnlock() override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::LockedPointerRegionSet()
+   */
+  void LockedPointerRegionSet(int32_t x, int32_t y, int32_t width, int32_t height) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::LockedPointerCursorPositionHintSet()
+   */
+  void LockedPointerCursorPositionHintSet(int32_t x, int32_t y) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::PointerWarp()
+   */
+  bool PointerWarp(int32_t x, int32_t y) override;
+
 private:
   /**
    * Second stage initialization
index 19417d2..b74d7a5 100644 (file)
@@ -43,6 +43,7 @@ WindowBase::WindowBase()
   mUpdatePositionSizeSignal(),
   mAuxiliaryMessageSignal(),
   mMouseInOutEventSignal(),
+  mMouseRelativeEventSignal(),
   mMoveCompletedSignal(),
   mResizeCompletedSignal(),
   mInsetsChangedSignal()
@@ -148,6 +149,11 @@ WindowBase::MouseInOutEventSignalType& WindowBase::MouseInOutEventSignal()
   return mMouseInOutEventSignal;
 }
 
+WindowBase::MouseRelativeEventSignalType& WindowBase::MouseRelativeEventSignal()
+{
+  return mMouseRelativeEventSignal;
+}
+
 WindowBase::MoveCompletedSignalType& WindowBase::MoveCompletedSignal()
 {
   return mMoveCompletedSignal;
index d014379..e058c6d 100644 (file)
@@ -77,6 +77,7 @@ public:
   typedef Signal<void(Dali::PositionSize&)>                                            UpdatePositionSizeType;
   typedef Signal<void(const std::string&, const std::string&, const Property::Array&)> AuxiliaryMessageSignalType;
   typedef Signal<void(const Dali::DevelWindow::MouseInOutEvent&)>                      MouseInOutEventSignalType;
+  typedef Signal<void(const Dali::DevelWindow::MouseRelativeEvent&)>                   MouseRelativeEventSignalType;
   typedef Signal<void(Dali::Int32Pair&)>                                               MoveCompletedSignalType;
   typedef Signal<void(Dali::Uint16Pair&)>                                              ResizeCompletedSignalType;
   typedef Signal<void(WindowInsetsPartType, WindowInsetsPartState, const Extents&)>    InsetsChangedSignalType;
@@ -466,6 +467,45 @@ public:
    */
   virtual void ExcludeInputRegion(const Rect<int>& inputRegion) = 0;
 
+  /**
+   * @brief Sets the pointer constraints lock.
+   * @return Returns true if PointerConstraintsLock succeeds.
+   */
+  virtual bool PointerConstraintsLock() = 0;
+
+  /**
+   * @brief Sets the pointer constraints unlock.
+   * @return Returns true if PointerConstraintsUnlock succeeds.
+   */
+  virtual bool PointerConstraintsUnlock() = 0;
+
+  /**
+   * @brief Sets the locked pointer region
+   *
+   * @param[in] x The x position.
+   * @param[in] y The y position.
+   * @param[in] width The width.
+   * @param[in] height The height
+   */
+  virtual void LockedPointerRegionSet(int32_t x, int32_t y, int32_t width, int32_t height) = 0;
+
+  /**
+   * @brief Sets the locked pointer cursor position hintset
+   *
+   * @param[in] x The x position.
+   * @param[in] y The y position.
+   */
+  virtual void LockedPointerCursorPositionHintSet(int32_t x, int32_t y) = 0;
+
+  /**
+   * @brief Sets the pointer warp. The pointer moves to the set coordinates.
+   *
+   * @param[in] x The x position.
+   * @param[in] y The y position.
+   * @return Returns true if PointerWarp succeeds.
+   */
+  virtual bool PointerWarp(int32_t x, int32_t y) = 0;
+
   // Signals
 
   /**
@@ -565,6 +605,11 @@ public:
   MouseInOutEventSignalType& MouseInOutEventSignal();
 
   /**
+   * @brief This signal is emitted when a mouse relative event is recevied.
+   */
+  MouseRelativeEventSignalType& MouseRelativeEventSignal();
+
+  /**
    * @brief This signal is emitted when window has been moved by then display server.
    * To be moved the window by display server, RequestMoveToServer() should be called.
    * After the moving job is finished, this function will be called.
@@ -610,6 +655,7 @@ protected:
   UpdatePositionSizeType                  mUpdatePositionSizeSignal;
   AuxiliaryMessageSignalType              mAuxiliaryMessageSignal;
   MouseInOutEventSignalType               mMouseInOutEventSignal;
+  MouseRelativeEventSignalType            mMouseRelativeEventSignal;
   MoveCompletedSignalType                 mMoveCompletedSignal;
   ResizeCompletedSignalType               mResizeCompletedSignal;
   InsetsChangedSignalType                 mInsetsChangedSignal;
index 3048d9e..ae3a117 100644 (file)
@@ -92,6 +92,7 @@ Window::Window()
   mMovedSignal(),
   mOrientationChangedSignal(),
   mMouseInOutEventSignal(),
+  mMouseRelativeEventSignal(),
   mMoveCompletedSignal(),
   mResizeCompletedSignal(),
   mInsetsChangedSignal(),
@@ -163,6 +164,7 @@ void Window::Initialize(Any surface, const PositionSize& positionSize, const std
   mWindowBase->UpdatePositionSizeSignal().Connect(this, &Window::OnUpdatePositionSize);
   mWindowBase->AuxiliaryMessageSignal().Connect(this, &Window::OnAuxiliaryMessage);
   mWindowBase->MouseInOutEventSignal().Connect(this, &Window::OnMouseInOutEvent);
+  mWindowBase->MouseRelativeEventSignal().Connect(this, &Window::OnMouseRelativeEvent);
   mWindowBase->MoveCompletedSignal().Connect(this, &Window::OnMoveCompleted);
   mWindowBase->ResizeCompletedSignal().Connect(this, &Window::OnResizeCompleted);
 
@@ -1079,6 +1081,13 @@ void Window::OnMouseInOutEvent(const Dali::DevelWindow::MouseInOutEvent& mouseIn
   mMouseInOutEventSignal.Emit(handle, mouseInOutEvent);
 }
 
+void Window::OnMouseRelativeEvent(const Dali::DevelWindow::MouseRelativeEvent& MouseRelativeEvent)
+{
+  Dali::Window handle(this);
+
+  mMouseRelativeEventSignal.Emit(handle, MouseRelativeEvent);
+}
+
 void Window::OnRotation(const RotationEvent& rotation)
 {
   PositionSize newPositionSize(rotation.x, rotation.y, rotation.width, rotation.height);
@@ -1396,6 +1405,31 @@ void Window::SetUserGeometryPolicy()
   DALI_LOG_RELEASE_INFO("Window (%p), WinId (%d), window user.geometry is changed\n", this, mNativeWindowId);
 }
 
+bool Window::PointerConstraintsLock()
+{
+  return mWindowBase->PointerConstraintsLock();
+}
+
+bool Window::PointerConstraintsUnlock()
+{
+  return mWindowBase->PointerConstraintsUnlock();
+}
+
+void Window::LockedPointerRegionSet(int32_t x, int32_t y, int32_t width, int32_t height)
+{
+  mWindowBase->LockedPointerRegionSet(x, y, width, height);
+}
+
+void Window::LockedPointerCursorPositionHintSet(int32_t x, int32_t y)
+{
+  mWindowBase->LockedPointerCursorPositionHintSet(x, y);
+}
+
+bool Window::PointerWarp(int32_t x, int32_t y)
+{
+  return mWindowBase->PointerWarp(x, y);
+}
+
 } // namespace Adaptor
 
 } // namespace Internal
index 8d15f61..8143ba1 100644 (file)
@@ -49,10 +49,11 @@ class WindowRenderSurface;
 class WindowBase;
 
 class Window;
-using WindowPtr          = IntrusivePtr<Window>;
-using OrientationPtr     = IntrusivePtr<Orientation>;
-using MouseInOutEventPtr = IntrusivePtr<Dali::DevelWindow::MouseInOutEvent>;
-using EventHandlerPtr    = IntrusivePtr<EventHandler>;
+using WindowPtr             = IntrusivePtr<Window>;
+using OrientationPtr        = IntrusivePtr<Orientation>;
+using MouseInOutEventPtr    = IntrusivePtr<Dali::DevelWindow::MouseInOutEvent>;
+using MouseRelativeEventPtr = IntrusivePtr<Dali::DevelWindow::MouseRelativeEvent>;
+using EventHandlerPtr       = IntrusivePtr<EventHandler>;
 
 /**
  * Window provides a surface to render onto with orientation & indicator properties.
@@ -70,6 +71,7 @@ public:
   typedef Dali::DevelWindow::MovedSignalType                         MovedSignalType;
   typedef Dali::DevelWindow::OrientationChangedSignalType            OrientationChangedSignalType;
   typedef Dali::DevelWindow::MouseInOutEventSignalType               MouseInOutEventSignalType;
+  typedef Dali::DevelWindow::MouseRelativeEventSignalType            MouseRelativeEventSignalType;
   typedef Dali::DevelWindow::MoveCompletedSignalType                 MoveCompletedSignalType;
   typedef Dali::DevelWindow::ResizeCompletedSignalType               ResizeCompletedSignalType;
   typedef Dali::DevelWindow::InsetsChangedSignalType                 InsetsChangedSignalType;
@@ -509,6 +511,31 @@ public: // Dali::Internal::Adaptor::SceneHolder
    */
   const Dali::TouchEvent& GetLastTouchEvent() const;
 
+  /**
+   * @copydoc Dali::DevelWindow::PointerConstraintsLock()
+   */
+  bool PointerConstraintsLock();
+
+  /**
+   * @copydoc Dali::DevelWindow::PointerConstraintsUnlock()
+   */
+  bool PointerConstraintsUnlock();
+
+  /**
+   * @copydoc Dali::DevelWindow::LockedPointerRegionSet()
+   */
+  void LockedPointerRegionSet(int32_t x, int32_t y, int32_t width, int32_t height);
+
+  /**
+   * @copydoc Dali::DevelWindow::LockedPointerCursorPositionHintSet()
+   */
+  void LockedPointerCursorPositionHintSet(int32_t x, int32_t y);
+
+  /**
+   * @copydoc Dali::DevelWindow::PointerWarp()
+   */
+  bool PointerWarp(int32_t x, int32_t y);
+
 private:
   /**
    * @brief Enumeration for orietation mode.
@@ -623,6 +650,12 @@ private:
   void OnMouseInOutEvent(const Dali::DevelWindow::MouseInOutEvent& mouseInOutEvent);
 
   /**
+   * @brief Called when the mouse relative event is received.
+   * @param[in] MouseRelativeEvent the mouse event
+   */
+  void OnMouseRelativeEvent(const Dali::DevelWindow::MouseRelativeEvent& MouseRelativeEvent);
+
+  /**
    * @brief Called when the window is moved by display server.
    *
    * @param[in] position the moved window's position.
@@ -673,7 +706,6 @@ private:
    */
   void OnInsetsChanged(WindowInsetsPartType partType, WindowInsetsPartState partState, const Extents& insets);
 
-
 private: // Dali::Internal::Adaptor::SceneHolder
   /**
    * @copydoc Dali::Internal::Adaptor::SceneHolder::OnAdaptorSet
@@ -819,6 +851,14 @@ public: // Signals
   }
 
   /**
+   * @copydoc Dali::DevelWindow::MouseRelativeEventSignal()
+   */
+  MouseRelativeEventSignalType& MouseRelativeEventSignal()
+  {
+    return mMouseRelativeEventSignal;
+  }
+
+  /**
    * @copydoc Dali::DevelWindow::MoveCompletedSignal()
    */
   MoveCompletedSignalType& MoveCompletedSignal()
@@ -873,6 +913,7 @@ private:
   MovedSignalType                         mMovedSignal;
   OrientationChangedSignalType            mOrientationChangedSignal;
   MouseInOutEventSignalType               mMouseInOutEventSignal;
+  MouseRelativeEventSignalType            mMouseRelativeEventSignal;
   MoveCompletedSignalType                 mMoveCompletedSignal;
   ResizeCompletedSignalType               mResizeCompletedSignal;
   InsetsChangedSignalType                 mInsetsChangedSignal;
index 4d3f047..63e77a8 100644 (file)
@@ -1,7 +1,7 @@
 #pragma once
 
 /*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -107,7 +107,7 @@ public:
    */
   void MoveResize(PositionSize positionSize) override;
 
- /**
 /**
    * @copydoc Dali::Internal::Adaptor::WindowBase::SetLayout()
    */
   void SetLayout(unsigned int numCols, unsigned int numRows, unsigned int column, unsigned int row, unsigned int colSpan, unsigned int rowSpan) override;
@@ -387,6 +387,31 @@ public:
    */
   void ExcludeInputRegion(const Rect<int>& inputRegion) override;
 
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::PointerConstraintsLock()
+   */
+  bool PointerConstraintsLock() override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::PointerConstraintsUnlock()
+   */
+  bool PointerConstraintsUnlock() override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::LockedPointerRegionSet()
+   */
+  void LockedPointerRegionSet(int32_t x, int32_t y, int32_t width, int32_t height) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::LockedPointerCursorPositionHintSet()
+   */
+  void LockedPointerCursorPositionHintSet(int32_t x, int32_t y) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::PointerWarp()
+   */
+  bool PointerWarp(int32_t x, int32_t y) override;
+
 private:
   // Undefined
   WindowBaseCocoa(const WindowBaseCocoa&) = delete;
index 16d2f75..675370b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -723,6 +723,29 @@ void WindowBaseCocoa::ExcludeInputRegion(const Rect<int>& inputRegion)
 {
 }
 
+bool WindowBaseCocoa::PointerConstraintsLock()
+{
+  return false;
+}
+
+bool WindowBaseCocoa::PointerConstraintsUnlock()
+{
+  return false;
+}
+
+void WindowBaseCocoa::LockedPointerRegionSet(int32_t x, int32_t y, int32_t width, int32_t height)
+{
+}
+
+void WindowBaseCocoa::LockedPointerCursorPositionHintSet(int32_t x, int32_t y)
+{
+}
+
+bool WindowBaseCocoa::PointerWarp(int32_t x, int32_t y)
+{
+  return false;
+}
+
 } // namespace Dali::Internal::Adaptor
 
 @implementation CocoaView
@@ -841,4 +864,3 @@ void WindowBaseCocoa::ExcludeInputRegion(const Rect<int>& inputRegion)
   [NSApp stop:nil];
 }
 @end
-
index 94ad113..c56dae2 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_INTERNAL_WINDOWSYSTEM_TIZENWAYLAND_WINDOW_BASE_ECORE_WL_H
 
 /*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -234,7 +234,7 @@ public:
    */
   void MoveResize(PositionSize positionSize) override;
 
- /**
 /**
    * @copydoc Dali::Internal::Adaptor::WindowBase::SetLayout()
    */
   void SetLayout(unsigned int numCols, unsigned int numRows, unsigned int column, unsigned int row, unsigned int colSpan, unsigned int rowSpan) override;
@@ -509,6 +509,31 @@ public:
    */
   void ExcludeInputRegion(const Rect<int>& inputRegion) override;
 
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::PointerConstraintsLock()
+   */
+  bool PointerConstraintsLock() override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::PointerConstraintsUnlock()
+   */
+  bool PointerConstraintsUnlock() override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::LockedPointerRegionSet()
+   */
+  void LockedPointerRegionSet(int32_t x, int32_t y, int32_t width, int32_t height) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::LockedPointerCursorPositionHintSet()
+   */
+  void LockedPointerCursorPositionHintSet(int32_t x, int32_t y) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::PointerWarp()
+   */
+  bool PointerWarp(int32_t x, int32_t y) override;
+
 private:
   /**
    * Second stage initialization
index 7dd0015..e6207aa 100644 (file)
@@ -459,6 +459,19 @@ static Eina_Bool EcoreEventMouseButtonMove(void* data, int type, void* event)
 }
 
 /**
+ * Called when a touch motion is received.
+ */
+static Eina_Bool EcoreEventMouseButtonRelativeMove(void* data, int type, void* event)
+{
+  WindowBaseEcoreWl2* windowBase = static_cast<WindowBaseEcoreWl2*>(data);
+  if(windowBase)
+  {
+    windowBase->OnMouseButtonRelativeMove(data, type, event);
+  }
+  return ECORE_CALLBACK_PASS_ON;
+}
+
+/**
  * Called when a touch is canceled.
  */
 static Eina_Bool EcoreEventMouseButtonCancel(void* data, int type, void* event)
@@ -965,6 +978,7 @@ void WindowBaseEcoreWl2::Initialize(PositionSize positionSize, Any surface, bool
   mEcoreEventHandler.PushBack(ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_UP, EcoreEventMouseButtonUp, this));
   mEcoreEventHandler.PushBack(ecore_event_handler_add(ECORE_EVENT_MOUSE_MOVE, EcoreEventMouseButtonMove, this));
   mEcoreEventHandler.PushBack(ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_CANCEL, EcoreEventMouseButtonCancel, this));
+  mEcoreEventHandler.PushBack(ecore_event_handler_add(ECORE_EVENT_MOUSE_RELATIVE_MOVE, EcoreEventMouseButtonRelativeMove, this));
 
   // Register Mouse wheel events
   mEcoreEventHandler.PushBack(ecore_event_handler_add(ECORE_EVENT_MOUSE_WHEEL, EcoreEventMouseWheel, this));
@@ -1327,6 +1341,26 @@ void WindowBaseEcoreWl2::OnMouseButtonMove(void* data, int type, void* event)
   }
 }
 
+void WindowBaseEcoreWl2::OnMouseButtonRelativeMove(void* data, int type, void* event)
+{
+  Ecore_Event_Mouse_Relative_Move* relativeMoveEvent = static_cast<Ecore_Event_Mouse_Relative_Move*>(event);
+
+  if(relativeMoveEvent->window == static_cast<unsigned int>(ecore_wl2_window_id_get(mEcoreWindow)))
+  {
+    DALI_TRACE_SCOPE(gTraceFilter, "DALI_ON_MOUSE_RELATIVE_MOVE");
+
+    Device::Class::Type    deviceClass;
+    Device::Subclass::Type deviceSubclass;
+
+    GetDeviceClass(ecore_device_class_get(relativeMoveEvent->dev), deviceClass);
+    GetDeviceSubclass(ecore_device_subclass_get(relativeMoveEvent->dev), deviceSubclass);
+
+    Dali::DevelWindow::MouseRelativeEvent MouseRelativeEvent(Dali::DevelWindow::MouseRelativeEvent::Type::RELATIVE_MOVE, relativeMoveEvent->modifiers, relativeMoveEvent->timestamp, Vector2(relativeMoveEvent->dx, relativeMoveEvent->dy), Vector2(relativeMoveEvent->dx_unaccel, relativeMoveEvent->dy_unaccel), deviceClass, deviceSubclass);
+
+    mMouseRelativeEventSignal.Emit(MouseRelativeEvent);
+  }
+}
+
 void WindowBaseEcoreWl2::OnMouseButtonCancel(void* data, int type, void* event)
 {
   Ecore_Event_Mouse_Button* touchEvent = static_cast<Ecore_Event_Mouse_Button*>(event);
@@ -1603,7 +1637,7 @@ void WindowBaseEcoreWl2::OnEcoreEventConformantChange(void* event)
     int w = 0;
     int h = 0;
 
-    switch (ev->part_type)
+    switch(ev->part_type)
     {
       case ECORE_WL2_INDICATOR_PART:
       {
@@ -1631,9 +1665,9 @@ void WindowBaseEcoreWl2::OnEcoreEventConformantChange(void* event)
 
     WindowInsetsPartState partState = WindowInsetsPartState::INVISIBLE;
 
-    int left = 0;
-    int right = 0;
-    int top = 0;
+    int left   = 0;
+    int right  = 0;
+    int top    = 0;
     int bottom = 0;
 
     // Insets are applied only if system UI(e.g. virtual keyboard) satisfies the following 2 conditions.
@@ -1660,12 +1694,12 @@ void WindowBaseEcoreWl2::OnEcoreEventConformantChange(void* event)
       {
         if((y <= winY) && (y + h >= winY) && (y + h <= winY + winH))
         {
-          top = y + h - winY;
+          top         = y + h - winY;
           applyInsets = true;
         }
         else if((y + h >= winY + winH) && (y >= winY) && (y <= winY + winH))
         {
-          bottom = winY + winH - y;
+          bottom      = winY + winH - y;
           applyInsets = true;
         }
       }
@@ -1673,12 +1707,12 @@ void WindowBaseEcoreWl2::OnEcoreEventConformantChange(void* event)
       {
         if((x <= winX) && (x + w >= winX) && (x + w <= winX + winW))
         {
-          left = x + w - winX;
+          left        = x + w - winX;
           applyInsets = true;
         }
         else if((x + w >= winX + winW) && (x >= winX) && (x <= winX + winW))
         {
-          right = winX + winW - x;
+          right       = winX + winW - x;
           applyInsets = true;
         }
       }
@@ -1768,7 +1802,7 @@ void WindowBaseEcoreWl2::RegistryGlobalCallbackRemove(void* data, struct wl_regi
 
 void WindowBaseEcoreWl2::TizenPolicyConformantArea(void* data, struct tizen_policy* tizenPolicy, struct wl_surface* surface, uint32_t conformantPart, uint32_t state, int32_t x, int32_t y, int32_t w, int32_t h)
 {
-  int originalX, originalY, originalWidth, originalHeight;
+  int  originalX, originalY, originalWidth, originalHeight;
   bool changed = false;
 
   if(!surface)
@@ -1790,7 +1824,7 @@ void WindowBaseEcoreWl2::TizenPolicyConformantArea(void* data, struct tizen_poli
      * The given state is based on the visibility value of indicator.
      * Thus we need to add 1 to it before comparing with indicator state.
      */
-    Ecore_Wl2_Indicator_State indState =  ecore_wl2_window_indicator_state_get(mEcoreWindow);
+    Ecore_Wl2_Indicator_State indState = ecore_wl2_window_indicator_state_get(mEcoreWindow);
     if((state + 1) != indState)
     {
       ecore_wl2_window_indicator_state_set(mEcoreWindow, static_cast<Ecore_Wl2_Indicator_State>(state + 1));
@@ -1840,15 +1874,15 @@ void WindowBaseEcoreWl2::TizenPolicyConformantArea(void* data, struct tizen_poli
 
   if(changed)
   {
-    Ecore_Wl2_Event_Conformant_Change *ev = static_cast<Ecore_Wl2_Event_Conformant_Change*>(calloc(1, sizeof(Ecore_Wl2_Event_Conformant_Change)));
+    Ecore_Wl2_Event_Conformant_Changeev = static_cast<Ecore_Wl2_Event_Conformant_Change*>(calloc(1, sizeof(Ecore_Wl2_Event_Conformant_Change)));
 
     if(!ev)
     {
       return;
     }
-    ev->win = GetNativeWindowId();
+    ev->win       = GetNativeWindowId();
     ev->part_type = static_cast<Ecore_Wl2_Conformant_Part_Type>(conformantPart);
-    ev->state = state;
+    ev->state     = state;
     ecore_event_add(ECORE_WL2_EVENT_CONFORMANT_CHANGE, ev, NULL, NULL);
   }
 
@@ -3350,6 +3384,31 @@ void WindowBaseEcoreWl2::ExcludeInputRegion(const Rect<int>& inputRegion)
   ecore_wl2_window_commit(mEcoreWindow, EINA_TRUE);
 }
 
+bool WindowBaseEcoreWl2::PointerConstraintsLock()
+{
+  return ecore_wl2_window_pointer_constraints_lock_pointer(mEcoreWindow);
+}
+
+bool WindowBaseEcoreWl2::PointerConstraintsUnlock()
+{
+  return ecore_wl2_window_pointer_constraints_unlock_pointer(mEcoreWindow);
+}
+
+void WindowBaseEcoreWl2::LockedPointerRegionSet(int32_t x, int32_t y, int32_t width, int32_t height)
+{
+  ecore_wl2_window_locked_pointer_region_set(mEcoreWindow, x, y, width, height);
+}
+
+void WindowBaseEcoreWl2::LockedPointerCursorPositionHintSet(int32_t x, int32_t y)
+{
+  ecore_wl2_window_locked_pointer_cursor_position_hint_set(mEcoreWindow, x, y);
+}
+
+bool WindowBaseEcoreWl2::PointerWarp(int32_t x, int32_t y)
+{
+  return ecore_wl2_window_pointer_warp(mEcoreWindow, x, y);
+}
+
 } // namespace Adaptor
 
 } // namespace Internal
index 13b1271..1e6e4f7 100644 (file)
@@ -106,6 +106,11 @@ public:
   void OnMouseButtonMove(void* data, int type, void* event);
 
   /**
+   * @brief Called when a touch motion is received.
+   */
+  void OnMouseButtonRelativeMove(void* data, int type, void* event);
+
+  /**
    * @brief Called when a touch is canceled.
    */
   void OnMouseButtonCancel(void* data, int type, void* event);
@@ -581,6 +586,31 @@ public:
    */
   void ExcludeInputRegion(const Rect<int>& inputRegion) override;
 
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::PointerConstraintsLock()
+   */
+  bool PointerConstraintsLock() override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::PointerConstraintsUnlock()
+   */
+  bool PointerConstraintsUnlock() override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::LockedPointerRegionSet()
+   */
+  void LockedPointerRegionSet(int32_t x, int32_t y, int32_t width, int32_t height) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::LockedPointerCursorPositionHintSet()
+   */
+  void LockedPointerCursorPositionHintSet(int32_t x, int32_t y) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::PointerWarp()
+   */
+  bool PointerWarp(int32_t x, int32_t y) override;
+
 private:
   /**
    * Second stage initialization
index 39bcf9a..c4bce93 100644 (file)
@@ -1019,6 +1019,29 @@ void WindowBaseEcoreX::ExcludeInputRegion(const Rect<int>& inputRegion)
 {
 }
 
+bool WindowBaseEcoreX::PointerConstraintsLock()
+{
+  return false;
+}
+
+bool WindowBaseEcoreX::PointerConstraintsUnlock()
+{
+  return false;
+}
+
+void WindowBaseEcoreX::LockedPointerRegionSet(int32_t x, int32_t y, int32_t width, int32_t height)
+{
+}
+
+void WindowBaseEcoreX::LockedPointerCursorPositionHintSet(int32_t x, int32_t y)
+{
+}
+
+bool WindowBaseEcoreX::PointerWarp(int32_t x, int32_t y)
+{
+  return false;
+}
+
 } // namespace Adaptor
 
 } // namespace Internal
index d2a2b81..735e1f7 100644 (file)
@@ -459,6 +459,31 @@ public:
    */
   void ExcludeInputRegion(const Rect<int>& inputRegion) override;
 
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::PointerConstraintsLock()
+   */
+  bool PointerConstraintsLock() override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::PointerConstraintsUnlock()
+   */
+  bool PointerConstraintsUnlock() override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::LockedPointerRegionSet()
+   */
+  void LockedPointerRegionSet(int32_t x, int32_t y, int32_t width, int32_t height) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::LockedPointerCursorPositionHintSet()
+   */
+  void LockedPointerCursorPositionHintSet(int32_t x, int32_t y) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::PointerWarp()
+   */
+  bool PointerWarp(int32_t x, int32_t y) override;
+
 private:
   /**
    * Second stage initialization
index c8792be..056d2a5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -654,6 +654,29 @@ void WindowBaseWin::ExcludeInputRegion(const Rect<int>& inputRegion)
 {
 }
 
+bool WindowBaseWin::PointerConstraintsLock()
+{
+  return false;
+}
+
+bool WindowBaseWin::PointerConstraintsUnlock()
+{
+  return false;
+}
+
+void WindowBaseWin::LockedPointerRegionSet(int32_t x, int32_t y, int32_t width, int32_t height)
+{
+}
+
+void WindowBaseWin::LockedPointerCursorPositionHintSet(int32_t x, int32_t y)
+{
+}
+
+bool WindowBaseWin::PointerWarp(int32_t x, int32_t y)
+{
+  return false;
+}
+
 } // namespace Adaptor
 
 } // namespace Internal
index 90c8d21..de49e6a 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_INTERNAL_WINDOWSYSTEM_WINDOW_BASE_WIN_H
 
 /*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -441,6 +441,31 @@ public:
    */
   void ExcludeInputRegion(const Rect<int>& inputRegion) override;
 
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::PointerConstraintsLock()
+   */
+  bool PointerConstraintsLock() override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::PointerConstraintsUnlock()
+   */
+  bool PointerConstraintsUnlock() override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::LockedPointerRegionSet()
+   */
+  void LockedPointerRegionSet(int32_t x, int32_t y, int32_t width, int32_t height) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::LockedPointerCursorPositionHintSet()
+   */
+  void LockedPointerCursorPositionHintSet(int32_t x, int32_t y) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::PointerWarp()
+   */
+  bool PointerWarp(int32_t x, int32_t y) override;
+
 private:
   /**
    * Second stage initialization
index c6868ce..bb1743b 100644 (file)
@@ -955,6 +955,29 @@ void WindowBaseX::ExcludeInputRegion(const Rect<int>& inputRegion)
 {
 }
 
+bool WindowBaseX::PointerConstraintsLock()
+{
+  return false;
+}
+
+bool WindowBaseX::PointerConstraintsUnlock()
+{
+  return false;
+}
+
+void WindowBaseX::LockedPointerRegionSet(int32_t x, int32_t y, int32_t width, int32_t height)
+{
+}
+
+void WindowBaseX::LockedPointerCursorPositionHintSet(int32_t x, int32_t y)
+{
+}
+
+bool WindowBaseX::PointerWarp(int32_t x, int32_t y)
+{
+  return false;
+}
+
 } // namespace Adaptor
 
 } // namespace Internal
index c801f4c..34ede13 100644 (file)
@@ -188,7 +188,7 @@ public:
    */
   void MoveResize(PositionSize positionSize) override;
 
-   /**
+  /**
    * @copydoc Dali::Internal::Adaptor::WindowBase::SetLayout()
    */
   void SetLayout(unsigned int numCols, unsigned int numRows, unsigned int column, unsigned int row, unsigned int colSpan, unsigned int rowSpan) override;
@@ -463,6 +463,31 @@ public:
    */
   void ExcludeInputRegion(const Rect<int>& inputRegion) override;
 
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::PointerConstraintsLock()
+   */
+  bool PointerConstraintsLock() override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::PointerConstraintsUnlock()
+   */
+  bool PointerConstraintsUnlock() override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::LockedPointerRegionSet()
+   */
+  void LockedPointerRegionSet(int32_t x, int32_t y, int32_t width, int32_t height) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::LockedPointerCursorPositionHintSet()
+   */
+  void LockedPointerCursorPositionHintSet(int32_t x, int32_t y) override;
+
+  /**
+   * @copydoc Dali::Internal::Adaptor::WindowBase::PointerWarp()
+   */
+  bool PointerWarp(int32_t x, int32_t y) override;
+
 private:
   /**
    * Second stage initialization