+ if(Internal::Adaptor::Adaptor::IsAvailable())
+ {
+ Dali::Internal::Adaptor::Adaptor& adaptor = Internal::Adaptor::Adaptor::GetImplementation(Internal::Adaptor::Adaptor::Get());
+ windowImpl = dynamic_cast<Internal::Adaptor::Window*>(adaptor.GetWindow(actor));
+ if(windowImpl)
+ {
+ return Dali::Window(windowImpl);
+ }
+ }
+
+ return Dali::Window();
+}
+
+void Window::SetParent(Dali::Window& parent)
+{
+ if(DALI_UNLIKELY(parent))
+ {
+ mParentWindow = parent;
+ Dali::Window self = Dali::Window(this);
+ // check circular parent window setting
+ if(Dali::DevelWindow::GetParent(parent) == self)
+ {
+ Dali::DevelWindow::Unparent(parent);
+ }
+ mWindowBase->SetParent(GetImplementation(mParentWindow).mWindowBase);
+ }
+}
+
+void Window::Unparent()
+{
+ mWindowBase->SetParent(nullptr);
+ mParentWindow.Reset();
+}
+
+Dali::Window Window::GetParent()
+{
+ return mParentWindow;
+}
+
+WindowOrientation Window::GetCurrentOrientation() const
+{
+ DALI_LOG_RELEASE_INFO("Window (%p), WinId (%d), GetCurrentOrientation(): %d\n", this, mNativeWindowId, mRotationAngle);
+ return ConvertToOrientation(mRotationAngle);
+}
+
+int Window::GetPhysicalOrientation() const
+{
+ return (mRotationAngle + mWindowBase->GetScreenRotationAngle()) % 360;
+}
+
+void Window::SetAvailableOrientations(const Dali::Vector<WindowOrientation>& orientations)
+{
+ Dali::Vector<float>::SizeType count = orientations.Count();
+ for(Dali::Vector<float>::SizeType index = 0; index < count; ++index)