+Window::Window(const Window& copy) = default;
+
+Window& Window::operator=(const Window& rhs) = default;
+
+Window::Window(Window&& rhs) = default;
+
+Window& Window::operator=(Window&& rhs) = default;
+
+Dali::Window Window::New(PositionSize windowPosition, const std::string& name, bool isTransparent)
+{
+ return New(windowPosition, name, "", isTransparent);
+}
+
+Dali::Window Window::New(PositionSize windowPosition, const std::string& name, const std::string& className, bool isTransparent)
+{
+ Internal::Adaptor::Window* window = Internal::Adaptor::Window::New(windowPosition, name, className, isTransparent);
+
+ Dali::Window result(window);
+
+ // This will also emit the window created signals
+ AdaptorImpl::GetImpl(AdaptorImpl::Get()).AddWindow(window);
+
+ return result;
+}
+
+Window Window::DownCast(BaseHandle handle)
+{
+ Internal::Adaptor::Window* windowImpl = nullptr;
+ if(Dali::Adaptor::IsAvailable())
+ {
+ windowImpl = dynamic_cast<Dali::Internal::Adaptor::Window*>(handle.GetObjectPtr());
+ }
+ return Dali::Window(windowImpl);
+}
+
+Window::Window(Internal::Adaptor::Window* window)
+: BaseHandle(window)
+{
+}
+
+Integration::Scene Window::GetScene()
+{
+ return GetImplementation(*this).GetScene();
+}
+
+Dali::RenderSurfaceInterface& Window::GetRenderSurface()
+{
+ return GetImplementation(*this).GetRenderSurface();
+}
+
+void Window::Add(Actor actor)