summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/kernel/qmetaobject.cpp14
-rw-r--r--src/corelib/kernel/qmetaobjectbuilder.cpp2
-rw-r--r--src/tools/moc/generator.cpp2
-rw-r--r--tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp15
-rw-r--r--tests/auto/corelib/kernel/qobject/tst_qobject.cpp2
5 files changed, 20 insertions, 15 deletions
diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp
index 4c2cddf818..5395a4ae2c 100644
--- a/src/corelib/kernel/qmetaobject.cpp
+++ b/src/corelib/kernel/qmetaobject.cpp
@@ -2105,8 +2105,6 @@ QVariant::Type QMetaProperty::type() const
uint flags = mobj->d.data[handle + 2];
uint type = flags >> 24;
- if (type == 0xff) // special value for QVariant
- type = QVariant::LastType;
if (type)
return QVariant::Type(type);
if (isEnumType()) {
@@ -2241,8 +2239,6 @@ QVariant QMetaProperty::read(const QObject *object) const
uint flags = mobj->d.data[handle + 2];
const char *typeName = mobj->d.stringdata + mobj->d.data[handle + 1];
t = (flags >> 24);
- if (t == 0xff) // special value for QVariant
- t = QVariant::LastType;
if (t == QVariant::Invalid)
t = QMetaType::type(typeName);
if (t == QVariant::Invalid)
@@ -2262,7 +2258,7 @@ QVariant QMetaProperty::read(const QObject *object) const
int status = -1;
QVariant value;
void *argv[] = { 0, &value, &status };
- if (t == QVariant::LastType) {
+ if (t == QMetaType::QVariant) {
argv[0] = &value;
} else {
value = QVariant(t, (void*)0);
@@ -2273,7 +2269,7 @@ QVariant QMetaProperty::read(const QObject *object) const
if (status != -1)
return value;
- if (t != QVariant::LastType && argv[0] != value.data())
+ if (t != QMetaType::QVariant && argv[0] != value.data())
// pointer or reference
return QVariant((QVariant::Type)t, argv[0]);
return value;
@@ -2312,8 +2308,6 @@ bool QMetaProperty::write(QObject *object, const QVariant &value) const
int handle = priv(mobj->d.data)->propertyData + 3*idx;
uint flags = mobj->d.data[handle + 2];
t = flags >> 24;
- if (t == 0xff) // special value for QVariant
- t = QVariant::LastType;
if (t == QVariant::Invalid) {
const char *typeName = mobj->d.stringdata + mobj->d.data[handle + 1];
const char *vtypeName = value.typeName();
@@ -2324,7 +2318,7 @@ bool QMetaProperty::write(QObject *object, const QVariant &value) const
}
if (t == QVariant::Invalid)
return false;
- if (t != QVariant::LastType && t != (uint)value.userType() && (t < QMetaType::User && !v.convert((QVariant::Type)t)))
+ if (t != QMetaType::QVariant && t != (uint)value.userType() && (t < QMetaType::User && !v.convert((QVariant::Type)t)))
return false;
}
@@ -2338,7 +2332,7 @@ bool QMetaProperty::write(QObject *object, const QVariant &value) const
// interception of property writes.
int flags = 0;
void *argv[] = { 0, &v, &status, &flags };
- if (t == QVariant::LastType)
+ if (t == QMetaType::QVariant)
argv[0] = &v;
else
argv[0] = v.data();
diff --git a/src/corelib/kernel/qmetaobjectbuilder.cpp b/src/corelib/kernel/qmetaobjectbuilder.cpp
index 7837cb9451..49cc8842cd 100644
--- a/src/corelib/kernel/qmetaobjectbuilder.cpp
+++ b/src/corelib/kernel/qmetaobjectbuilder.cpp
@@ -80,8 +80,6 @@ uint qvariant_nameToType(const char* name)
if (!name)
return 0;
- if (strcmp(name, "QVariant") == 0)
- return 0xffffffff;
if (strcmp(name, "QCString") == 0)
return QMetaType::QByteArray;
if (strcmp(name, "Q_LLONG") == 0)
diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp
index 605e751df4..dc902ece33 100644
--- a/src/tools/moc/generator.cpp
+++ b/src/tools/moc/generator.cpp
@@ -54,8 +54,6 @@ uint qvariant_nameToType(const char* name)
if (!name)
return 0;
- if (strcmp(name, "QVariant") == 0)
- return 0xffffffff;
if (strcmp(name, "QCString") == 0)
return QMetaType::QByteArray;
if (strcmp(name, "Q_LLONG") == 0)
diff --git a/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp b/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp
index d0f68db4a2..7ba96b236f 100644
--- a/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp
+++ b/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp
@@ -57,6 +57,7 @@ private slots:
void signal();
void constructor();
void property();
+ void variantProperty();
void notifySignal();
void enumerator();
void classInfo();
@@ -727,6 +728,20 @@ void tst_QMetaObjectBuilder::property()
QCOMPARE(builder.method(0).signature(), QByteArray("propChanged(QString)"));
}
+void tst_QMetaObjectBuilder::variantProperty()
+{
+ QMetaObjectBuilder builder;
+ builder.addProperty("variant", "const QVariant &");
+ QMetaObject *meta = builder.toMetaObject();
+
+ QMetaProperty prop = meta->property(meta->propertyOffset());
+ QCOMPARE(QMetaType::Type(prop.type()), QMetaType::QVariant);
+ QCOMPARE(QMetaType::Type(prop.userType()), QMetaType::QVariant);
+ QCOMPARE(QByteArray(prop.typeName()), QByteArray("QVariant"));
+
+ qFree(meta);
+}
+
void tst_QMetaObjectBuilder::notifySignal()
{
QMetaObjectBuilder builder;
diff --git a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
index dec34a8fa0..c1471e4f21 100644
--- a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
+++ b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
@@ -1671,7 +1671,7 @@ void tst_QObject::property()
const int idx = mo->indexOfProperty("variant");
QVERIFY(idx != -1);
- QVERIFY(mo->property(idx).type() == QVariant::LastType);
+ QCOMPARE(QMetaType::Type(mo->property(idx).type()), QMetaType::QVariant);
QCOMPARE(object.property("variant"), QVariant());
QVariant variant1(42);
QVariant variant2("string");