diff options
author | Martin Jones <martin.jones@nokia.com> | 2010-04-07 04:01:07 (GMT) |
---|---|---|
committer | Martin Jones <martin.jones@nokia.com> | 2010-04-07 04:01:07 (GMT) |
commit | c380aeefbfa2cd1aa2d1d21f45101bfb058a40de (patch) | |
tree | 873d7b2f476273dedc8aa0347d7367f5c2e1de5a /src/declarative/qml/qdeclarative.h | |
parent | 1d27a2ace38d1098ef639086330a6fb88d8833d9 (diff) | |
download | Qt-c380aeefbfa2cd1aa2d1d21f45101bfb058a40de.zip Qt-c380aeefbfa2cd1aa2d1d21f45101bfb058a40de.tar.gz Qt-c380aeefbfa2cd1aa2d1d21f45101bfb058a40de.tar.bz2 |
Disallow creation of attached objects Keys and KeyNavigation
Also adds qmlRegisterUncreatableType<>() to allow registration of
named types that cannot be created.
Task-number: QTBUG-9575
Diffstat (limited to 'src/declarative/qml/qdeclarative.h')
-rw-r--r-- | src/declarative/qml/qdeclarative.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/declarative/qml/qdeclarative.h b/src/declarative/qml/qdeclarative.h index 7c7f6e5..6e36d4f 100644 --- a/src/declarative/qml/qdeclarative.h +++ b/src/declarative/qml/qdeclarative.h @@ -119,6 +119,38 @@ int qmlRegisterType() } template<typename T> +int qmlRegisterUncreatableType(const char *uri, int versionMajor, int versionMinor, const char *qmlName) +{ + QByteArray name(T::staticMetaObject.className()); + + QByteArray pointerName(name + '*'); + QByteArray listName("QDeclarativeListProperty<" + name + ">"); + + QDeclarativePrivate::RegisterType type = { + 0, + + qRegisterMetaType<T *>(pointerName.constData()), + qRegisterMetaType<QDeclarativeListProperty<T> >(listName.constData()), + 0, 0, + + uri, versionMajor, versionMinor, qmlName, &T::staticMetaObject, + + QDeclarativePrivate::attachedPropertiesFunc<T>(), + QDeclarativePrivate::attachedPropertiesMetaObject<T>(), + + QDeclarativePrivate::StaticCastSelector<T,QDeclarativeParserStatus>::cast(), + QDeclarativePrivate::StaticCastSelector<T,QDeclarativePropertyValueSource>::cast(), + QDeclarativePrivate::StaticCastSelector<T,QDeclarativePropertyValueInterceptor>::cast(), + + 0, 0, + + 0 + }; + + return QDeclarativePrivate::registerType(type); +} + +template<typename T> int qmlRegisterType(const char *uri, int versionMajor, int versionMinor, const char *qmlName) { QByteArray name(T::staticMetaObject.className()); |