Merge "[AT-SPI] Add resource id to window attribute" into devel/master
authorShinwoo Kim <cinoo.kim@samsung.com>
Fri, 8 Apr 2022 06:54:36 +0000 (06:54 +0000)
committerGerrit Code Review <gerrit@review>
Fri, 8 Apr 2022 06:54:36 +0000 (06:54 +0000)
1  2 
dali/internal/window-system/common/window-impl.cpp
dali/internal/window-system/common/window-impl.h
dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.cpp

@@@ -1,5 -1,5 +1,5 @@@
  /*
-  * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+  * Copyright (c) 2022 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.
@@@ -81,7 -81,6 +81,7 @@@ Window::Window(
    mIconified(false),
    mOpaqueState(false),
    mWindowRotationAcknowledgement(false),
 +  mFocused(false),
    mParentWindow(NULL),
    mPreferredAngle(static_cast<int>(WindowOrientation::NO_ORIENTATION_PREFERENCE)),
    mRotationAngle(0),
  
  Window::~Window()
  {
 -  auto bridge     = Accessibility::Bridge::GetCurrentBridge();
 -  auto rootLayer  = mScene.GetRootLayer();
 -  auto accessible = Accessibility::Accessible::Get(rootLayer, true);
 -  bridge->RemoveTopLevelWindow(accessible);
 +  if(mScene)
 +  {
 +    auto bridge     = Accessibility::Bridge::GetCurrentBridge();
 +    auto rootLayer  = mScene.GetRootLayer();
 +    auto accessible = Accessibility::Accessible::Get(rootLayer, true);
 +    bridge->RemoveTopLevelWindow(accessible);
 +  }
  
    if(mAdaptor)
    {
@@@ -179,13 -175,10 +179,13 @@@ void Window::OnAdaptorSet(Dali::Adaptor
    mEventHandler->AddObserver(*this);
  
    // Add Window to bridge for ATSPI
 -  auto bridge     = Accessibility::Bridge::GetCurrentBridge();
 -  auto rootLayer  = mScene.GetRootLayer();
 -  auto accessible = Accessibility::Accessible::Get(rootLayer, true);
 -  bridge->AddTopLevelWindow(accessible);
 +  auto bridge = Accessibility::Bridge::GetCurrentBridge();
 +  if (bridge->IsUp())
 +  {
 +    auto rootLayer  = mScene.GetRootLayer();
 +    auto accessible = Accessibility::Accessible::Get(rootLayer, true);
 +    bridge->AddTopLevelWindow(accessible);
 +  }
  
    bridge->EnabledSignal().Connect(this, &Window::OnAccessibilityEnabled);
    bridge->DisabledSignal().Connect(this, &Window::OnAccessibilityDisabled);
@@@ -278,6 -271,11 +278,11 @@@ Dali::RenderTaskList Window::GetRenderT
    return mScene.GetRenderTaskList();
  }
  
+ std::string Window::GetNativeResourceId() const
+ {
+   return mWindowBase->GetNativeWindowResourceId();
+ }
  void Window::AddAvailableOrientation(WindowOrientation orientation)
  {
    if(IsOrientationAvailable(orientation) == false)
@@@ -474,7 -472,6 +479,7 @@@ void Window::Show(
    {
      Dali::Window handle(this);
      mVisibilityChangedSignal.Emit(handle, true);
 +    Dali::Accessibility::Bridge::GetCurrentBridge()->WindowShown(handle);
  
      WindowVisibilityObserver* observer(mAdaptor);
      observer->OnWindowShown();
@@@ -495,7 -492,6 +500,7 @@@ void Window::Hide(
    {
      Dali::Window handle(this);
      mVisibilityChangedSignal.Emit(handle, false);
 +    Dali::Accessibility::Bridge::GetCurrentBridge()->WindowHidden(handle);
  
      WindowVisibilityObserver* observer(mAdaptor);
      observer->OnWindowHidden();
@@@ -756,7 -752,6 +761,7 @@@ void Window::OnIconifyChanged(bool icon
      {
        Dali::Window handle(this);
        mVisibilityChangedSignal.Emit(handle, false);
 +      Dali::Accessibility::Bridge::GetCurrentBridge()->WindowHidden(handle);
  
        WindowVisibilityObserver* observer(mAdaptor);
        observer->OnWindowHidden();
      {
        Dali::Window handle(this);
        mVisibilityChangedSignal.Emit(handle, true);
 +      Dali::Accessibility::Bridge::GetCurrentBridge()->WindowShown(handle);
  
        WindowVisibilityObserver* observer(mAdaptor);
        observer->OnWindowShown();
@@@ -802,7 -796,6 +807,7 @@@ void Window::OnFocusChanged(bool focusI
        bridge->WindowUnfocused(handle);
      }
    }
 +  mFocused = focusIn;
  }
  
  void Window::OnOutputTransformed()
@@@ -934,12 -927,6 +939,12 @@@ void Window::OnAccessibilityEnabled(
    auto rootLayer  = mScene.GetRootLayer();
    auto accessible = Accessibility::Accessible::Get(rootLayer, true);
    bridge->AddTopLevelWindow(accessible);
 +
 +  if(mFocused)
 +  {
 +    Dali::Window handle(this);
 +    bridge->WindowFocused(handle);
 +  }
  }
  
  void Window::OnAccessibilityDisabled()
@@@ -2,7 -2,7 +2,7 @@@
  #define DALI_INTERNAL_WINDOWSYSTEM_COMMON_WINDOW_IMPL_H
  
  /*
-  * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+  * Copyright (c) 2022 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.
@@@ -152,6 -152,12 +152,12 @@@ public
    Dali::RenderTaskList GetRenderTaskList() const;
  
    /**
+    * @brief Get window resource ID assigned by window manager
+    * @return The resource ID of the window
+    */
+   std::string GetNativeResourceId() const;
+   /**
     * @copydoc Dali::Window::AddAvailableOrientation()
     */
    void AddAvailableOrientation(WindowOrientation orientation);
@@@ -687,7 -693,6 +693,7 @@@ private
    bool                 mIconified : 1;
    bool                 mOpaqueState : 1;
    bool                 mWindowRotationAcknowledgement : 1;
 +  bool                 mFocused : 1;
    Dali::Window         mParentWindow;
  
    OrientationPtr   mOrientation;
@@@ -508,8 -508,9 +508,8 @@@ static Eina_Bool EcoreEventEffectEnd(vo
  
  static Eina_Bool EcoreEventSeatKeyboardRepeatChanged(void* data, int type, void* event)
  {
 -  Ecore_Wl2_Event_Seat_Keyboard_Repeat_Changed* keyboardRepeat = static_cast<Ecore_Wl2_Event_Seat_Keyboard_Repeat_Changed*>(event);
 -  WindowBaseEcoreWl2*                           windowBase     = static_cast<WindowBaseEcoreWl2*>(data);
 -  DALI_LOG_INFO(gWindowBaseLogFilter, Debug::General, "WindowBaseEcoreWl2::EcoreEventSeatKeyboardRepeatChanged, id[ %d ]\n", keyboardRepeat->id);
 +  WindowBaseEcoreWl2* windowBase = static_cast<WindowBaseEcoreWl2*>(data);
 +  DALI_LOG_INFO(gWindowBaseLogFilter, Debug::General, "WindowBaseEcoreWl2::EcoreEventSeatKeyboardRepeatChanged, id[ %d ]\n", static_cast<Ecore_Wl2_Event_Seat_Keyboard_Repeat_Changed*>(event)->id);
    if(windowBase)
    {
      windowBase->OnKeyboardRepeatSettingsChanged();
@@@ -567,8 -568,9 +567,8 @@@ static void VconfNotifyFontSizeChanged(
  
  static Eina_Bool EcoreEventWindowRedrawRequest(void* data, int type, void* event)
  {
 -  Ecore_Wl2_Event_Window_Redraw_Request* windowRedrawRequest = static_cast<Ecore_Wl2_Event_Window_Redraw_Request*>(event);
 -  WindowBaseEcoreWl2*                    windowBase          = static_cast<WindowBaseEcoreWl2*>(data);
 -  DALI_LOG_INFO(gWindowBaseLogFilter, Debug::General, "WindowBaseEcoreWl2::EcoreEventWindowRedrawRequest, window[ %d ]\n", windowRedrawRequest->win);
 +  WindowBaseEcoreWl2* windowBase = static_cast<WindowBaseEcoreWl2*>(data);
 +  DALI_LOG_INFO(gWindowBaseLogFilter, Debug::General, "WindowBaseEcoreWl2::EcoreEventWindowRedrawRequest, window[ %d ]\n", static_cast<Ecore_Wl2_Event_Window_Redraw_Request*>(event)->win);
    if(windowBase)
    {
      windowBase->OnEcoreEventWindowRedrawRequest();
@@@ -1530,6 -1532,11 +1530,11 @@@ int WindowBaseEcoreWl2::GetNativeWindow
    return ecore_wl2_window_id_get(mEcoreWindow);
  }
  
+ std::string WindowBaseEcoreWl2::GetNativeWindowResourceId()
+ {
+   return std::to_string(ecore_wl2_window_resource_id_get(mEcoreWindow));
+ }
  EGLNativeWindowType WindowBaseEcoreWl2::CreateEglWindow(int width, int height)
  {
    int totalAngle = (mWindowRotationAngle + mScreenRotationAngle) % 360;