+Toolkit::Internal::LayoutItemPtr Control::Impl::GetLayout() const
+{
+ return mLayout;
+}
+
+void Control::Impl::SetLayout( Toolkit::Internal::LayoutItem& layout )
+{
+ DALI_LOG_INFO( gLogFilterLayout, Debug::Verbose, "Control::SetLayout control:%s existing layout:%s\n",
+ mControlImpl.Self().GetName().c_str(),
+ mLayout?"true":"false" );
+
+ if( mLayout )
+ {
+ mLayout->Unparent();
+ mLayout.Reset();
+ }
+ mLayout = &layout;
+
+ auto controlHandle = Toolkit::Control::DownCast( mControlImpl.Self() ); // Get a handle of this control implementation without copying internals.
+ mLayout->Initialize( controlHandle, controlHandle.GetTypeName() ); // LayoutGroup takes ownership of existing children
+}
+
+void Control::Impl::RemoveLayout()
+{
+ if( mLayout )
+ {
+ mLayout->Unparent();
+ mLayout.Reset();
+ }
+}
+
+void Control::Impl::SetLayoutingRequired( bool layoutingRequired )
+{
+ mControlImpl.mImpl->mIsLayoutingRequired = layoutingRequired;
+}
+
+bool Control::Impl::IsLayoutingRequired()
+{
+ return mControlImpl.mImpl->mIsLayoutingRequired;
+}
+