summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qmetatype.cpp
diff options
context:
space:
mode:
authorStephen Kelly <stephen.kelly@kdab.com>2011-12-30 12:00:09 +0100
committerQt by Nokia <qt-info@nokia.com>2012-01-24 15:27:25 +0100
commit4b8ceb41aed352f10d36db5284453f425dbc5f3f (patch)
tree6362bc3353107a7d35b7bb1cefb7f1751fe473fe /src/corelib/kernel/qmetatype.cpp
parent6efefb3fe5c7c392bc4857d979dee51042a4f043 (diff)
Store the is-a QObject fact with the metatype declaration.
This is a source incompatible change for Q_DECLARE_METATYPE(T*), which now requires T to be fully defined. The consequences of this are: * Forward declared types can no longer be declared as a metatype. (though this is a very uncommon thing to do). There is a trivial workaround where necessary. Change-Id: Id74c40088b8c0b466fcd7c55abd616f69acc82c8 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Diffstat (limited to 'src/corelib/kernel/qmetatype.cpp')
-rw-r--r--src/corelib/kernel/qmetatype.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp
index 44fa450f5f..1c106f4f36 100644
--- a/src/corelib/kernel/qmetatype.cpp
+++ b/src/corelib/kernel/qmetatype.cpp
@@ -1670,11 +1670,13 @@ class Flags
template<typename T, bool IsAcceptedType = DefinedTypesFilter::Acceptor<T>::IsAccepted>
struct FlagsImpl
{
- static quint32 Flags(const int)
+ static quint32 Flags(const int type)
{
return (!QTypeInfo<T>::isStatic * QMetaType::MovableType)
| (QTypeInfo<T>::isComplex * QMetaType::NeedsConstruction)
- | (QTypeInfo<T>::isComplex * QMetaType::NeedsDestruction);
+ | (QTypeInfo<T>::isComplex * QMetaType::NeedsDestruction)
+ | (type == QMetaType::QObjectStar ? QMetaType::PointerToQObject : 0)
+ | (type == QMetaType::QWidgetStar ? QMetaType::PointerToQObject : 0);
}
};
template<typename T>