summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Kelly <stephen.kelly@kdab.com>2012-07-19 14:33:28 +0200
committerQt by Nokia <qt-info@nokia.com>2012-08-18 10:55:47 +0200
commit4d9d88af6ff494f09cfbc376a1f9aa0ea9ca2357 (patch)
treedec39e6b8c95c71638a1ab492b8098ccd4f7cd77
parent33b298427161c51ae39f0dcaf01d6914b7c8b01c (diff)
Remove QWidgetStar.
This allows us to remove the odd hacks to get the static metaobject for the QWidget* metatype. The QWidget* is still an automatic metatype thanks to the QObject partial template specialization. It is registered as a metatype at runtime automatically in qwidgetsvariant.cpp. Change-Id: Ie01b69eadf2cbe87af1a86c3284550f60dcf9e94 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
-rw-r--r--dist/changes-5.0.02
-rw-r--r--src/corelib/kernel/qmetatype.cpp5
-rw-r--r--src/corelib/kernel/qmetatype.h18
-rw-r--r--src/corelib/kernel/qvariant.cpp4
-rw-r--r--src/widgets/kernel/qwidgetsvariant.cpp3
-rw-r--r--tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp3
-rw-r--r--tests/auto/corelib/kernel/qmetatype/typeFlags.binbin146 -> 144 bytes
-rw-r--r--tests/auto/widgets/kernel/qwidgetmetatype/tst_qwidgetmetatype.cpp4
-rw-r--r--tests/auto/widgets/kernel/qwidgetsvariant/tst_qwidgetsvariant.cpp7
9 files changed, 12 insertions, 34 deletions
diff --git a/dist/changes-5.0.0 b/dist/changes-5.0.0
index e40c7c70ab..9a9c0ec4e2 100644
--- a/dist/changes-5.0.0
+++ b/dist/changes-5.0.0
@@ -62,6 +62,8 @@ information about a particular change.
- QMetaType:
* QMetaType::construct() has been renamed to QMetaType::create().
* QMetaType::unregisterType() has been removed.
+ * QMetaType::QWidgetStar has been removed. Use qMetaTypeId<QWidget*>()
+ or QVariant::canConvert<QWidget*>() as appropriate.
- QMetaMethod:
* QMetaMethod::signature() has been renamed to QMetaMethod::methodSignature(),
diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp
index 18b17d9aea..080dbd718a 100644
--- a/src/corelib/kernel/qmetatype.cpp
+++ b/src/corelib/kernel/qmetatype.cpp
@@ -165,7 +165,6 @@ struct DefinedTypesFilter {
\value UChar \c{unsigned char}
\value Float \c float
\value QObjectStar QObject *
- \value QWidgetStar QWidget *
\value QVariant QVariant
\value QCursor QCursor
@@ -604,7 +603,7 @@ int QMetaType::registerNormalizedTypedef(const NS(QByteArray) &normalizedTypeNam
bool QMetaType::isRegistered(int type)
{
// predefined type
- if ((type >= FirstCoreType && type <= LastCoreType)
+ if ((type >= FirstCoreType && type <= LastCoreType && type != 40) // 40 is the type that QWidgetStar used to be
|| (type >= FirstGuiType && type <= LastGuiType)
|| (type >= FirstWidgetsType && type <= LastWidgetsType)) {
return true;
@@ -693,7 +692,6 @@ bool QMetaType::save(QDataStream &stream, int type, const void *data)
case QMetaType::Void:
case QMetaType::VoidStar:
case QMetaType::QObjectStar:
- case QMetaType::QWidgetStar:
case QMetaType::QModelIndex:
case QMetaType::QJsonValue:
case QMetaType::QJsonObject:
@@ -911,7 +909,6 @@ bool QMetaType::load(QDataStream &stream, int type, void *data)
case QMetaType::Void:
case QMetaType::VoidStar:
case QMetaType::QObjectStar:
- case QMetaType::QWidgetStar:
case QMetaType::QModelIndex:
case QMetaType::QJsonValue:
case QMetaType::QJsonObject:
diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h
index 7c32ce744e..a40bd77e5a 100644
--- a/src/corelib/kernel/qmetatype.h
+++ b/src/corelib/kernel/qmetatype.h
@@ -113,8 +113,7 @@ QT_BEGIN_NAMESPACE
F(QJsonDocument, 48, QJsonDocument) \
#define QT_FOR_EACH_STATIC_CORE_POINTER(F)\
- F(QObjectStar, 39, QObject*) \
- F(QWidgetStar, 40, QWidget*) \
+ F(QObjectStar, 39, QObject*)
#define QT_FOR_EACH_STATIC_CORE_TEMPLATE(F)\
F(QVariantMap, 8, QVariantMap) \
@@ -233,7 +232,7 @@ public:
QRegularExpression = 44,
QJsonValue = 45, QJsonObject = 46, QJsonArray = 47, QJsonDocument = 48,
SChar = 49,
- QObjectStar = 39, QWidgetStar = 40,
+ QObjectStar = 39,
Void = 43,
QVariantMap = 8, QVariantList = 9, QVariantHash = 28,
QFont = 64, QPixmap = 65, QBrush = 66, QColor = 67, QPalette = 68,
@@ -448,11 +447,6 @@ namespace QtPrivate
{
enum { Value = true };
};
- template<>
- struct IsPointerToTypeDerivedFromQObject<QWidget*>
- {
- enum { Value = true };
- };
template<typename T>
struct IsPointerToTypeDerivedFromQObject<T*>
@@ -480,14 +474,6 @@ namespace QtPrivate
static inline const QMetaObject *value() { return &T::staticMetaObject; }
};
- Q_CORE_EXPORT const QMetaObject *metaObjectForQWidget();
-
- template<>
- struct MetaObjectForType<QWidget*, /* isPointerToTypeDerivedFromQObject = */ true>
- {
- static const QMetaObject *value() { return metaObjectForQWidget(); }
- };
-
template<typename T>
struct IsSharedPointerToTypeDerivedFromQObject
{
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp
index 4b582affb3..8c38259276 100644
--- a/src/corelib/kernel/qvariant.cpp
+++ b/src/corelib/kernel/qvariant.cpp
@@ -1074,8 +1074,7 @@ Q_CORE_EXPORT void QVariantPrivate::registerHandler(const int /* Modules::Names
Usually, you never have to use this constructor, use QVariant::fromValue()
instead to construct variants from the pointer types represented by
- \c QMetaType::VoidStar, \c QMetaType::QObjectStar and
- \c QMetaType::QWidgetStar.
+ \c QMetaType::VoidStar, and \c QMetaType::QObjectStar.
\sa QVariant::fromValue(), Type
*/
@@ -2724,7 +2723,6 @@ bool QVariant::canConvert(int targetTypeId) const
case QMetaType::Short:
case QMetaType::UShort:
return qCanConvertMatrix[QVariant::Int] & (1 << currentType) || currentType == QVariant::Int;
- case QMetaType::QWidgetStar:
case QMetaType::QObjectStar:
return canConvertMetaObject(currentType, targetTypeId, d.data.o);
default:
diff --git a/src/widgets/kernel/qwidgetsvariant.cpp b/src/widgets/kernel/qwidgetsvariant.cpp
index 0e4d44bc97..bc1112c9aa 100644
--- a/src/widgets/kernel/qwidgetsvariant.cpp
+++ b/src/widgets/kernel/qwidgetsvariant.cpp
@@ -152,12 +152,11 @@ static const QMetaTypeInterface qVariantWidgetsHelper[] = {
} // namespace
extern Q_CORE_EXPORT const QMetaTypeInterface *qMetaTypeWidgetsHelper;
-extern Q_CORE_EXPORT const QMetaObject *qMetaObjectWidgetsHelper;
void qRegisterWidgetsVariant()
{
+ qRegisterMetaType<QWidget*>();
qMetaTypeWidgetsHelper = qVariantWidgetsHelper;
- qMetaObjectWidgetsHelper = &QWidget::staticMetaObject;
QVariantPrivate::registerHandler(QModulesPrivate::Widgets, &widgets_handler);
}
Q_CONSTRUCTOR_FUNCTION(qRegisterWidgetsVariant)
diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
index b251761415..1d559af22c 100644
--- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
+++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
@@ -498,9 +498,6 @@ template<> struct TestValueFactory<QMetaType::Float> {
template<> struct TestValueFactory<QMetaType::QObjectStar> {
static QObject * *create() { return new QObject *(0); }
};
-template<> struct TestValueFactory<QMetaType::QWidgetStar> {
- static QWidget * *create() { return new QWidget *(0); }
-};
template<> struct TestValueFactory<QMetaType::VoidStar> {
static void * *create() { return new void *(0); }
};
diff --git a/tests/auto/corelib/kernel/qmetatype/typeFlags.bin b/tests/auto/corelib/kernel/qmetatype/typeFlags.bin
index cf83e9419e..dee0983775 100644
--- a/tests/auto/corelib/kernel/qmetatype/typeFlags.bin
+++ b/tests/auto/corelib/kernel/qmetatype/typeFlags.bin
Binary files differ
diff --git a/tests/auto/widgets/kernel/qwidgetmetatype/tst_qwidgetmetatype.cpp b/tests/auto/widgets/kernel/qwidgetmetatype/tst_qwidgetmetatype.cpp
index f92a4fd5cd..fbfa018cef 100644
--- a/tests/auto/widgets/kernel/qwidgetmetatype/tst_qwidgetmetatype.cpp
+++ b/tests/auto/widgets/kernel/qwidgetmetatype/tst_qwidgetmetatype.cpp
@@ -68,14 +68,14 @@ public:
};
Q_STATIC_ASSERT(( QMetaTypeId2<QSizePolicy>::IsBuiltIn));
-Q_STATIC_ASSERT(( QMetaTypeId2<QWidget*>::IsBuiltIn));
+Q_STATIC_ASSERT((!QMetaTypeId2<QWidget*>::IsBuiltIn));
Q_STATIC_ASSERT((!QMetaTypeId2<QList<QSizePolicy> >::IsBuiltIn));
Q_STATIC_ASSERT((!QMetaTypeId2<QMap<QString,QSizePolicy> >::IsBuiltIn));
void tst_QWidgetMetaType::metaObject()
{
- QCOMPARE(QMetaType::metaObjectForType(QMetaType::QWidgetStar), &QWidget::staticMetaObject);
+ QCOMPARE(QMetaType::metaObjectForType(qMetaTypeId<QWidget*>()), &QWidget::staticMetaObject);
QCOMPARE(QMetaType::metaObjectForType(qMetaTypeId<QLabel*>()), &QLabel::staticMetaObject);
QCOMPARE(QMetaType::metaObjectForType(qMetaTypeId<CustomWidget*>()), &CustomWidget::staticMetaObject);
}
diff --git a/tests/auto/widgets/kernel/qwidgetsvariant/tst_qwidgetsvariant.cpp b/tests/auto/widgets/kernel/qwidgetsvariant/tst_qwidgetsvariant.cpp
index 90238b5d9b..a5e33c41c9 100644
--- a/tests/auto/widgets/kernel/qwidgetsvariant/tst_qwidgetsvariant.cpp
+++ b/tests/auto/widgets/kernel/qwidgetsvariant/tst_qwidgetsvariant.cpp
@@ -198,11 +198,10 @@ void tst_QWidgetsVariant::qvariant_cast_QObject()
QCOMPARE(data.userType(), int(QMetaType::QObjectStar));
QVERIFY(data.canConvert<QWidget*>());
- QVERIFY(data.canConvert(QMetaType::QWidgetStar));
QVERIFY(data.canConvert(::qMetaTypeId<QWidget*>()));
QVERIFY(data.value<QWidget*>());
- QVERIFY(data.convert(QMetaType::QWidgetStar));
- QCOMPARE(data.userType(), int(QMetaType::QWidgetStar));
+ QVERIFY(data.convert(qMetaTypeId<QWidget*>()));
+ QCOMPARE(data.userType(), qMetaTypeId<QWidget*>());
} else {
QVERIFY(!data.canConvert<QObject*>());
QVERIFY(!data.canConvert(QMetaType::QObjectStar));
@@ -219,7 +218,7 @@ void tst_QWidgetsVariant::qvariant_cast_QObject_derived()
CustomQWidget customWidget;
QWidget *widget = &customWidget;
QVariant data = QVariant::fromValue(widget);
- QVERIFY(data.userType() == QMetaType::QWidgetStar);
+ QVERIFY(data.userType() == qMetaTypeId<QWidget*>());
QCOMPARE(data.value<QObject*>(), widget);
QCOMPARE(data.value<QWidget*>(), widget);