summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/qdeclarative.h
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2010-04-07 04:01:07 (GMT)
committerMartin Jones <martin.jones@nokia.com>2010-04-07 04:01:07 (GMT)
commitc380aeefbfa2cd1aa2d1d21f45101bfb058a40de (patch)
tree873d7b2f476273dedc8aa0347d7367f5c2e1de5a /src/declarative/qml/qdeclarative.h
parent1d27a2ace38d1098ef639086330a6fb88d8833d9 (diff)
downloadQt-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.h32
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());