[Tizen] Add KeyEventMonitorSignal 92/321092/1 accepted/tizen/9.0/unified/20241201.053513
authorjoogab.yun <joogab.yun@samsung.com>
Tue, 26 Nov 2024 06:34:02 +0000 (15:34 +0900)
committerjoogab.yun <joogab.yun@samsung.com>
Wed, 27 Nov 2024 09:40:28 +0000 (18:40 +0900)
Change-Id: If898a915deeb74a827ea868d3eca91ddc57144a3

dali/devel-api/adaptor-framework/window-devel.cpp
dali/devel-api/adaptor-framework/window-devel.h
dali/integration-api/adaptor-framework/scene-holder-impl.h
dali/integration-api/adaptor-framework/scene-holder.cpp
dali/integration-api/adaptor-framework/scene-holder.h
dali/internal/adaptor/common/adaptor-impl.cpp
dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.cpp

index 8f3456d68b5d4cc8fce921936766f942dec43f70..8a5374567daff1486b1a84e6828cad87261db91c 100644 (file)
@@ -245,6 +245,7 @@ void FeedWheelEvent(Window window, const Dali::WheelEvent& wheelEvent)
 void FeedKeyEvent(Window window, const Dali::KeyEvent& keyEvent)
 {
   Integration::KeyEvent convertedEvent(keyEvent.GetKeyName(), keyEvent.GetLogicalKey(), keyEvent.GetKeyString(), keyEvent.GetKeyCode(), keyEvent.GetKeyModifier(), keyEvent.GetTime(), static_cast<Integration::KeyEvent::State>(keyEvent.GetState()), keyEvent.GetCompose(), keyEvent.GetDeviceName(), keyEvent.GetDeviceClass(), keyEvent.GetDeviceSubclass());
+  convertedEvent.receiveTime = keyEvent.GetReceiveTime();
   GetImplementation(window).FeedKeyEvent(convertedEvent);
 }
 
@@ -449,6 +450,11 @@ PointerConstraintsSignalType& PointerConstraintsSignal(Window window)
   return GetImplementation(window).PointerConstraintsSignal();
 }
 
+KeyEventSignalType& KeyEventMonitorSignal(Window window)
+{
+  return GetImplementation(window).KeyEventMonitorSignal();
+}
+
 } // namespace DevelWindow
 
 } // namespace Dali
index e2ab62566653fef8503b483d44beb66acc0161d1..062a55b225c07ebd09f97fb41317902d29bba229 100644 (file)
@@ -883,6 +883,13 @@ DALI_ADAPTOR_API InsetsChangedSignalType& InsetsChangedSignal(Window window);
  */
 DALI_ADAPTOR_API PointerConstraintsSignalType& PointerConstraintsSignal(Window window);
 
+/**
+ * @brief This signal is emitted when the key event monitor is received.
+ * @param[in] window The window instance
+ * @return The signal to connect to
+ */
+DALI_ADAPTOR_API KeyEventSignalType& KeyEventMonitorSignal(Window window);
+
 } // namespace DevelWindow
 
 } // namespace Dali
index 0ce626c5d5568c06db92a820e62f391bcf8f5482..d9238467f38684aea563b9aadc6567dacfdc2840 100644 (file)
@@ -310,6 +310,14 @@ public:
     return mScene.InterceptKeyEventSignal();
   }
 
+  /**
+   * @copydoc Dali::Integration::SceneHolder::KeyEventMonitorSignal()
+   */
+  Dali::Integration::SceneHolder::KeyEventSignalType& KeyEventMonitorSignal()
+  {
+    return mScene.KeyEventMonitorSignal();
+  }
+
   /**
    * @copydoc Dali::Integration::SceneHolder::TouchedSignal()
    */
index 160326e10bdd23a81e7fd12947aab08c291f852b..d66bbfcb0fdee64464ded642c948f6cb39e7046f 100644 (file)
@@ -104,6 +104,7 @@ void SceneHolder::FeedWheelEvent(Dali::WheelEvent& wheelEvent)
 void SceneHolder::FeedKeyEvent(Dali::KeyEvent& keyEvent)
 {
   Integration::KeyEvent event(keyEvent.GetKeyName(), keyEvent.GetLogicalKey(), keyEvent.GetKeyString(), keyEvent.GetKeyCode(), keyEvent.GetKeyModifier(), keyEvent.GetTime(), static_cast<Integration::KeyEvent::State>(keyEvent.GetState()), keyEvent.GetCompose(), keyEvent.GetDeviceName(), keyEvent.GetDeviceClass(), keyEvent.GetDeviceSubclass());
+  event.receiveTime = keyEvent.GetReceiveTime();
   GetImplementation(*this).FeedKeyEvent(event);
 }
 
@@ -153,6 +154,11 @@ SceneHolder::KeyEventGeneratedSignalType& SceneHolder::InterceptKeyEventSignal()
   return GetImplementation(*this).InterceptKeyEventSignal();
 }
 
+SceneHolder::KeyEventSignalType& SceneHolder::KeyEventMonitorSignal()
+{
+  return GetImplementation(*this).KeyEventMonitorSignal();
+}
+
 SceneHolder::TouchEventSignalType& SceneHolder::TouchedSignal()
 {
   return GetImplementation(*this).TouchedSignal();
index 1639e5ff67a318fe0b6181e3a885cef8e70351cd..2d80e39ebaaf785052ba26e844b9defa3e1a1cf9 100644 (file)
@@ -258,6 +258,17 @@ public:
    */
   KeyEventGeneratedSignalType& InterceptKeyEventSignal();
 
+  /**
+   * @brief This signal is emitted when key event is received.
+   *
+   * A callback of the following type may be connected:
+   * @code
+   *   void YourCallbackName(const KeyEvent& event);
+   * @endcode
+   * @return The signal to connect to
+   */
+  KeyEventSignalType& KeyEventMonitorSignal();
+
   /**
    * @brief This signal is emitted when the screen is touched and when the touch ends
    * (i.e. the down & up touch events only).
index c1cb59e87ef0d8aa04e654020b7356b72f3adac8..2c963b7109095f58ea73dcb37a94b36a4d23d386 100644 (file)
@@ -598,6 +598,7 @@ void Adaptor::FeedWheelEvent(Dali::WheelEvent& wheelEvent)
 void Adaptor::FeedKeyEvent(Dali::KeyEvent& keyEvent)
 {
   Integration::KeyEvent convertedEvent(keyEvent.GetKeyName(), keyEvent.GetLogicalKey(), keyEvent.GetKeyString(), keyEvent.GetKeyCode(), keyEvent.GetKeyModifier(), keyEvent.GetTime(), static_cast<Integration::KeyEvent::State>(keyEvent.GetState()), keyEvent.GetCompose(), keyEvent.GetDeviceName(), keyEvent.GetDeviceClass(), keyEvent.GetDeviceSubclass());
+  convertedEvent.receiveTime = keyEvent.GetReceiveTime();
   mWindows.front()->FeedKeyEvent(convertedEvent);
 }
 
index 0bc53b8be6e831b947f9459cb2f0104d210a432f..3d36a649ebfc339adef4f8ba49cc34c32e52c952 100644 (file)
@@ -1642,6 +1642,7 @@ void WindowBaseEcoreWl2::OnKeyDown(void* data, int type, void* event)
     Integration::KeyEvent keyEvent(keyName, logicalKey, keyString, keyCode, modifier, time, Integration::KeyEvent::DOWN, compose, deviceName, deviceClass, deviceSubclass);
     keyEvent.isRepeat = isRepeat;
     keyEvent.windowId = GetNativeWindowId();
+    keyEvent.receiveTime = TimeService::GetMilliSeconds();
 
     mKeyEventSignal.Emit(keyEvent);
   }
@@ -1714,6 +1715,7 @@ void WindowBaseEcoreWl2::OnKeyUp(void* data, int type, void* event)
 
     Integration::KeyEvent keyEvent(keyName, logicalKey, keyString, keyCode, modifier, time, Integration::KeyEvent::UP, compose, deviceName, deviceClass, deviceSubclass);
     keyEvent.windowId = GetNativeWindowId();
+    keyEvent.receiveTime = TimeService::GetMilliSeconds();
 
     mKeyEventSignal.Emit(keyEvent);
   }