[AT-SPI] Squashed implementation
[platform/core/uifw/dali-adaptor.git] / dali / internal / window-system / common / window-impl.cpp
index fe1dacc..e5456d3 100755 (executable)
@@ -41,6 +41,7 @@
 #include <dali/internal/window-system/common/window-system.h>
 #include <dali/internal/window-system/common/window-render-surface.h>
 #include <dali/internal/window-system/common/window-visibility-observer.h>
+#include <dali/devel-api/adaptor-framework/accessibility-impl.h>
 
 namespace Dali
 {
@@ -99,6 +100,16 @@ Window::Window()
 
 Window::~Window()
 {
+  if ( mAdaptor )
+  {
+    auto bridge = Accessibility::Bridge::GetCurrentBridge();
+    auto accessible2 = mScene.GetRootLayer();
+    auto accessible = Accessibility::Accessible::Get( accessible2 );
+    bridge->RemoveTopLevelWindow( accessible );
+
+    mAdaptor->RemoveWindow( this );
+  }
+
   if ( mEventHandler )
   {
     mEventHandler->RemoveObserver( *this );
@@ -156,6 +167,14 @@ void Window::OnAdaptorSet(Dali::Adaptor& adaptor)
 {
   mEventHandler = EventHandlerPtr(new EventHandler( mWindowSurface->GetWindowBase(), *mAdaptor ) );
   mEventHandler->AddObserver( *this );
+
+  auto bridge = Accessibility::Bridge::GetCurrentBridge();
+  auto v = mScene.GetRootLayer();
+  auto accessible = Accessibility::Accessible::Get( v, true );
+  bridge->AddTopLevelWindow( accessible );
+
+  //FIXME: line below is temporary solution for missing "activate" signal and should be removed
+  Show();
 }
 
 void Window::OnSurfaceSet( Dali::RenderSurfaceInterface* surface )
@@ -726,6 +745,18 @@ void Window::OnFocusChanged( bool focusIn )
   mFocusChangeSignal.Emit( handle, focusIn );
 
   mSurface->SetFullSwapNextFrame();
+
+  if (auto b = Dali::Accessibility::Bridge::GetCurrentBridge())
+  {
+    if (focusIn)
+    {
+      b->ApplicationShown();
+    }
+    else
+    {
+      b->ApplicationHidden();
+    }
+  }
 }
 
 void Window::OnOutputTransformed()