Add Get/Set native window id on SceneHoder and Window 55/303055/8
authorjoogab.yun <joogab.yun@samsung.com>
Tue, 19 Dec 2023 10:48:26 +0000 (19:48 +0900)
committerjoogab.yun <joogab.yun@samsung.com>
Tue, 26 Dec 2023 08:14:40 +0000 (17:14 +0900)
Change-Id: I355ef2207dcbb386ab29ee237d14bfc860a65791

13 files changed:
dali/devel-api/adaptor-framework/window-devel.h
dali/integration-api/adaptor-framework/scene-holder-impl.cpp
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/window-system/common/gl-window-impl.cpp
dali/internal/window-system/common/window-impl.cpp
dali/internal/window-system/macos/window-base-mac.mm
dali/internal/window-system/tizen-wayland/ecore-wl/window-base-ecore-wl.cpp
dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.cpp
dali/internal/window-system/ubuntu-x11/window-base-ecore-x.cpp
dali/internal/window-system/windows/window-base-win.cpp
dali/internal/window-system/x11/window-base-x.cpp

index 2a92b07..7b63e0b 100644 (file)
@@ -261,7 +261,7 @@ DALI_ADAPTOR_API int GetPhysicalOrientation(Window window);
 DALI_ADAPTOR_API void SetAvailableOrientations(Window window, const Dali::Vector<WindowOrientation>& orientations);
 
 /**
- * @brief Gets current window ID.
+ * @brief Gets the native window id.
  *
  * @param[in] window The window instance
  */
index 5b82cc7..011b87f 100644 (file)
@@ -436,6 +436,11 @@ bool SceneHolder::IsGeometryHittestEnabled()
   return mScene.IsGeometryHittestEnabled();
 }
 
+int32_t SceneHolder::GetNativeId() const
+{
+  return mScene.GetNativeId();
+}
+
 void SceneHolder::AddFrameRenderedCallback(std::unique_ptr<CallbackBase> callback, int32_t frameId)
 {
   mScene.AddFrameRenderedCallback(std::move(callback), frameId);
index a0eafa8..144bc13 100644 (file)
@@ -221,6 +221,11 @@ public:
   bool IsGeometryHittestEnabled();
 
   /**
+   * @copydoc Dali::Integration::SceneHolder::GetNativeId
+   */
+  int32_t GetNativeId() const;
+
+  /**
    * @brief Adds a callback that is called when the frame rendering is done by the graphics driver.
    *
    * @param[in] callback The function to call
index 860169a..188b936 100644 (file)
@@ -123,6 +123,11 @@ RenderTaskList SceneHolder::GetRenderTaskList()
   return GetImplementation(*this).GetRenderTaskList();
 }
 
+int32_t SceneHolder::GetNativeId() const
+{
+  return GetImplementation(*this).GetNativeId();
+}
+
 SceneHolder SceneHolder::Get(Actor actor)
 {
   return Internal::Adaptor::SceneHolder::Get(actor);
index 5f3fc21..b7a4bd4 100644 (file)
@@ -200,6 +200,13 @@ public:
   RenderTaskList GetRenderTaskList();
 
   /**
+   * @brief Gets the native window id
+   *
+   * @return The native window id
+   */
+  int32_t GetNativeId() const;
+
+  /**
    * @brief Retrieve the SceneHolder that the given actor is added to.
    *
    * @param[in] actor The actor
index 1a33ca2..4e993e0 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.
@@ -511,6 +511,7 @@ void GlWindow::OnWheelEvent(Dali::Integration::WheelEvent& wheelEvent)
 void GlWindow::OnKeyEvent(Dali::Integration::KeyEvent& keyEvent)
 {
   Dali::KeyEvent event = Dali::DevelKeyEvent::New(keyEvent.keyName, keyEvent.logicalKey, keyEvent.keyString, keyEvent.keyCode, keyEvent.keyModifier, keyEvent.time, static_cast<Dali::KeyEvent::State>(keyEvent.state), keyEvent.compose, keyEvent.deviceName, keyEvent.deviceClass, keyEvent.deviceSubclass);
+  Dali::DevelKeyEvent::SetWindowId(event, keyEvent.windowId);
   Dali::GlWindow handle(this);
   mKeyEventSignal.Emit(event);
 }
index 5ba1cf4..3ff5ecd 100644 (file)
@@ -258,6 +258,8 @@ void Window::OnAdaptorSet(Dali::Adaptor& adaptor)
   {
     bool isGeometry = Dali::Internal::Adaptor::WindowSystem::IsGeometryHittestEnabled();
     mScene.SetGeometryHittestEnabled(isGeometry);
+
+    mScene.SetNativeId(GetNativeId());
   }
 
   // If you call the 'Show' before creating the adaptor, the application cannot know the app resource id.
@@ -1089,6 +1091,7 @@ void Window::OnWheelEvent(Dali::Integration::WheelEvent& wheelEvent)
 void Window::OnKeyEvent(Dali::Integration::KeyEvent& keyEvent)
 {
   mLastKeyEvent = Dali::DevelKeyEvent::New(keyEvent.keyName, keyEvent.logicalKey, keyEvent.keyString, keyEvent.keyCode, keyEvent.keyModifier, keyEvent.time, static_cast<Dali::KeyEvent::State>(keyEvent.state), keyEvent.compose, keyEvent.deviceName, keyEvent.deviceClass, keyEvent.deviceSubclass);
+  DevelKeyEvent::SetWindowId(mLastKeyEvent, keyEvent.windowId);
   FeedKeyEvent(keyEvent);
 }
 
index f7ee40c..52a049b 100644 (file)
@@ -287,6 +287,7 @@ void WindowBaseCocoa::Impl::OnKey(NSEvent *event, Integration::KeyEvent::State k
     "WindowBaseCocoa::Impl::OnKey(%s)\n",
     [event.characters UTF8String]
   );
+  keyEvent.windowId = mThis->GetNativeWindowId();
 
   mThis->mKeyEventSignal.Emit(keyEvent);
 }
index 1d7ae2b..ecd3ec6 100644 (file)
@@ -986,6 +986,7 @@ void WindowBaseEcoreWl::OnKeyDown(void* data, int type, void* event)
     GetDeviceSubclass(ecore_device_subclass_get(keyEvent->dev), deviceSubclass);
 
     Integration::KeyEvent keyEvent(keyName, logicalKey, keyString, keyCode, modifier, time, Integration::KeyEvent::DOWN, compose, deviceName, deviceClass, deviceSubclass);
+    keyEvent.windowId = GetNativeWindowId();
 
     mKeyEventSignal.Emit(keyEvent);
   }
@@ -1049,6 +1050,7 @@ void WindowBaseEcoreWl::OnKeyUp(void* data, int type, void* event)
     GetDeviceSubclass(ecore_device_subclass_get(keyEvent->dev), deviceSubclass);
 
     Integration::KeyEvent keyEvent(keyName, logicalKey, keyString, keyCode, modifier, time, Integration::KeyEvent::UP, compose, deviceName, deviceClass, deviceSubclass);
+    keyEvent.windowId = GetNativeWindowId();
 
     mKeyEventSignal.Emit(keyEvent);
   }
index 2800176..9f02a2a 100644 (file)
@@ -1540,6 +1540,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();
 
     mKeyEventSignal.Emit(keyEvent);
   }
@@ -1611,6 +1612,7 @@ void WindowBaseEcoreWl2::OnKeyUp(void* data, int type, void* event)
     GetDeviceSubclass(ecore_device_subclass_get(keyEvent->dev), deviceSubclass);
 
     Integration::KeyEvent keyEvent(keyName, logicalKey, keyString, keyCode, modifier, time, Integration::KeyEvent::UP, compose, deviceName, deviceClass, deviceSubclass);
+    keyEvent.windowId = GetNativeWindowId();
 
     mKeyEventSignal.Emit(keyEvent);
   }
index fa085a4..daf5247 100644 (file)
@@ -565,6 +565,7 @@ void WindowBaseEcoreX::OnKeyDown(void* data, int type, void* event)
     }
 
     Integration::KeyEvent keyEvent(keyName, logicalKey, keyString, keyCode, modifier, time, Integration::KeyEvent::DOWN, compose, DEFAULT_DEVICE_NAME, DEFAULT_DEVICE_CLASS, DEFAULT_DEVICE_SUBCLASS);
+    keyEvent.windowId = GetNativeWindowId();
 
     mKeyEventSignal.Emit(keyEvent);
   }
@@ -605,6 +606,7 @@ void WindowBaseEcoreX::OnKeyUp(void* data, int type, void* event)
     }
 
     Integration::KeyEvent keyEvent(keyName, logicalKey, keyString, keyCode, modifier, time, Integration::KeyEvent::UP, compose, DEFAULT_DEVICE_NAME, DEFAULT_DEVICE_CLASS, DEFAULT_DEVICE_SUBCLASS);
+    keyEvent.windowId = GetNativeWindowId();
 
     mKeyEventSignal.Emit(keyEvent);
   }
index 1c3e8bf..7621a02 100644 (file)
@@ -212,6 +212,7 @@ void WindowBaseWin::OnKeyDown(int type, TWinEventInfo* event)
     keyString.push_back(event->wParam);
 
     Integration::KeyEvent keyEvent(keyName, emptyString, keyString, keyCode, modifier, time, Integration::KeyEvent::DOWN, emptyString, emptyString, DEFAULT_DEVICE_CLASS, DEFAULT_DEVICE_SUBCLASS);
+    keyEvent.windowId = GetNativeWindowId();
 
     mKeyEventSignal.Emit(keyEvent);
   }
@@ -235,6 +236,7 @@ void WindowBaseWin::OnKeyUp(int type, TWinEventInfo* event)
     keyString.push_back(event->wParam);
 
     Integration::KeyEvent keyEvent(keyName, emptyString, keyString, keyCode, modifier, time, Integration::KeyEvent::UP, emptyString, emptyString, DEFAULT_DEVICE_CLASS, DEFAULT_DEVICE_SUBCLASS);
+    keyEvent.windowId = GetNativeWindowId();
 
     mKeyEventSignal.Emit(keyEvent);
   }
index da92eff..ab62841 100644 (file)
@@ -559,6 +559,7 @@ Integration::KeyEvent WindowBaseX::CreateKeyEvent(WindowSystemX::X11KeyEvent* ke
   unsigned long time(keyEvent->timestamp);
 
   Integration::KeyEvent daliKeyEvent{keyName, logicalKey, keyString, keyCode, modifier, time, state, compose, DEFAULT_DEVICE_NAME, DEFAULT_DEVICE_CLASS, DEFAULT_DEVICE_SUBCLASS};
+  daliKeyEvent.windowId = GetNativeWindowId();
   return daliKeyEvent;
 }