+void Control::Impl::SetInputMethodContext( InputMethodContext& inputMethodContext )
+{
+ mInputMethodContext = inputMethodContext;
+}
+
+bool Control::Impl::FilterKeyEvent( const KeyEvent& event )
+{
+ bool consumed ( false );
+
+ if ( mInputMethodContext )
+ {
+ consumed = mInputMethodContext.FilterEventKey( event );
+ }
+ return consumed;
+}
+
+Toolkit::Internal::LayoutItemPtr Control::Impl::GetLayout() const
+{
+ return mLayout;
+}
+
+void Control::Impl::SetLayout( Toolkit::Internal::LayoutItem& layout )
+{
+ 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();
+ }
+}
+