X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Fdevel-api%2Fcontrols%2Fcontrol-wrapper-impl.cpp;h=d3fcc5698ce0237c9016f356a964496715280221;hp=48019feb90754799b3f81750b83f406c812765bb;hb=159563699a1d8ac7fb2fc516fdb0e9c5be69016a;hpb=9f77c9e72e5601d52ad3da117b5679311c016028 diff --git a/dali-toolkit/devel-api/controls/control-wrapper-impl.cpp b/dali-toolkit/devel-api/controls/control-wrapper-impl.cpp index 48019fe..d3fcc56 100755 --- a/dali-toolkit/devel-api/controls/control-wrapper-impl.cpp +++ b/dali-toolkit/devel-api/controls/control-wrapper-impl.cpp @@ -18,8 +18,13 @@ // CLASS HEADER #include -// INTERNAL INCLUDES +// EXTERNAL INCLUDES #include +#include +#include +#include + +// INTERNAL INCLUDES #include #include #include @@ -34,11 +39,26 @@ namespace Toolkit namespace Internal { +namespace +{ + +BaseHandle Create() +{ + // empty handle as we cannot create control wrapper + return BaseHandle(); +} + +// Setup type-registry. +DALI_TYPE_REGISTRATION_BEGIN( Toolkit::ControlWrapper, Toolkit::Control, Create ) +DALI_TYPE_REGISTRATION_END() + +} + /* * Implementation. */ -Dali::Toolkit::ControlWrapper ControlWrapper::New( ControlWrapper* controlWrapper ) +Dali::Toolkit::ControlWrapper ControlWrapper::New( const std::string& typeName, ControlWrapper* controlWrapper ) { ControlWrapperPtr wrapper( controlWrapper ); @@ -49,6 +69,19 @@ Dali::Toolkit::ControlWrapper ControlWrapper::New( ControlWrapper* controlWrappe // This can only be done after the CustomActor connection has been made. wrapper->Initialize(); + // Different types of C# custom view registered themselves using type registry, + // but their type names are registered per type not per instance, so they still + // have the same wrong type name in native side when type registry queries the + // unique type name of each instance using typeid() because of the binding. + // Therefore, we have to link each instance with its correct type info if already + // pre-registered. + + TypeInfo typeInfo = TypeRegistry::Get().GetTypeInfo( typeName ); + if(typeInfo) + { + Dali::DevelHandle::SetTypeInfo( handle, typeInfo ); + } + return handle; }