+Dali::Window Window::Get( Dali::Actor actor )
+{
+ Internal::Adaptor::Window* windowImpl = nullptr;
+
+ if ( Internal::Adaptor::Adaptor::IsAvailable() )
+ {
+ Dali::Internal::Adaptor::Adaptor& adaptor = Internal::Adaptor::Adaptor::GetImplementation( Internal::Adaptor::Adaptor::Get() );
+ windowImpl = static_cast<Internal::Adaptor::Window*>( adaptor.GetWindow( actor ) );
+ }
+
+ return Dali::Window( windowImpl );
+}
+
+void Window::SetParent( Dali::Window& parent )
+{
+ if ( DALI_UNLIKELY( parent ) )
+ {
+ mParentWindow = parent;
+ Dali::Window grandParent = Dali::DevelWindow::GetParent( parent );
+ // check circular parent window setting
+ if ( DALI_UNLIKELY( grandParent ) && mWindowBase->IsMatchedWindow( grandParent.GetNativeHandle() ) )
+ {
+ Dali::DevelWindow::Unparent( parent );
+ }
+ mWindowBase->SetParent( parent.GetNativeHandle() );
+ }
+}
+
+void Window::Unparent()
+{
+ Any parent;
+ mWindowBase->SetParent( parent );
+}
+
+Dali::Window Window::GetParent()
+{
+ return mParentWindow;
+}