[Tizen](ATSPI) squashed implementation
[platform/core/uifw/dali-adaptor.git] / dali / internal / window-system / common / window-impl.cpp
index 30aaeee..2ef0962 100644 (file)
@@ -43,6 +43,7 @@
 #include <dali/internal/window-system/common/window-base.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.h>
 
 namespace Dali
 {
@@ -84,12 +85,25 @@ Window::Window()
   mWindowHeight( 0 ),
   mFocusChangedSignal(),
   mResizedSignal(),
-  mDeleteRequestSignal()
+  mDeleteRequestSignal(),
+  mFocusChangeSignal(),
+  mResizeSignal()
 {
 }
 
 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 );
+    mAdaptor = NULL;
+  }
+
   if ( mEventHandler )
   {
     mEventHandler->RemoveObserver( *this );
@@ -131,6 +145,14 @@ void Window::OnAdaptorSet(Dali::Adaptor& adaptor)
 {
   mEventHandler = EventHandlerPtr(new EventHandler( mWindowSurface, *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 )
@@ -462,7 +484,9 @@ void Window::SetSize( Dali::Window::WindowSize size )
 
     mAdaptor->SurfaceResizePrepare( mSurface.get(), newSize );
 
+    Dali::Window handle( this );
     mResizedSignal.Emit( newSize );
+    mResizeSignal.Emit( handle, newSize );
 
     mAdaptor->SurfaceResizeComplete( mSurface.get(), newSize );
   }
@@ -524,8 +548,9 @@ void Window::SetPositionSize( PositionSize positionSize )
 
     mAdaptor->SurfaceResizePrepare( mSurface.get(), newSize );
 
+    Dali::Window handle( this );
     mResizedSignal.Emit( newSize );
-
+    mResizeSignal.Emit( handle, newSize );
     mAdaptor->SurfaceResizeComplete( mSurface.get(), newSize );
   }
 }
@@ -590,7 +615,21 @@ void Window::OnIconifyChanged( bool iconified )
 
 void Window::OnFocusChanged( bool focusIn )
 {
+  Dali::Window handle( this );
   mFocusChangedSignal.Emit( focusIn );
+  mFocusChangeSignal.Emit( handle, focusIn );
+
+  if (auto b = Dali::Accessibility::Bridge::GetCurrentBridge())
+  {
+    if (focusIn)
+    {
+      b->ApplicationShown();
+    }
+    else
+    {
+      b->ApplicationHidden();
+    }
+  }
 }
 
 void Window::OnOutputTransformed()
@@ -645,12 +684,14 @@ void Window::OnRotation( const RotationEvent& rotation )
 
   SurfaceResized( forceUpdate );
 
-  mAdaptor->SurfaceResizePrepare( mSurface.get(), Adaptor::SurfaceSize( mRotationAngle, mWindowHeight ) );
+  mAdaptor->SurfaceResizePrepare( mSurface.get(), Adaptor::SurfaceSize( mWindowWidth, mWindowHeight ) );
 
   // Emit signal
-  mResizedSignal.Emit( Dali::Window::WindowSize( mRotationAngle, mWindowHeight ) );
+  Dali::Window handle( this );
+  mResizedSignal.Emit( Dali::Window::WindowSize( mWindowWidth, mWindowHeight ) );
+  mResizeSignal.Emit( handle, Dali::Window::WindowSize( mWindowWidth, mWindowHeight ) );
 
-  mAdaptor->SurfaceResizeComplete( mSurface.get(), Adaptor::SurfaceSize( mRotationAngle, mWindowHeight ) );
+  mAdaptor->SurfaceResizeComplete( mSurface.get(), Adaptor::SurfaceSize( mWindowWidth, mWindowHeight ) );
 }
 
 void Window::OnPause()
@@ -717,7 +758,6 @@ Dali::Window Window::Get( Dali::Actor actor )
   return Dali::Window( windowImpl );
 }
 
-
 void Window::SetParent( Dali::Window& parent )
 {
   if ( DALI_UNLIKELY( parent ) )