summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qvariant.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/kernel/qvariant.cpp')
-rw-r--r--src/corelib/kernel/qvariant.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp
index 0b4c3f387f..6541b97595 100644
--- a/src/corelib/kernel/qvariant.cpp
+++ b/src/corelib/kernel/qvariant.cpp
@@ -3523,13 +3523,19 @@ bool QVariant::canConvert(int targetTypeId) const
}
// TODO Reimplement this function, currently it works but it is a historical mess.
- uint currentType = ((d.type == QMetaType::Float) ? QVariant::Double : d.type);
+ uint currentType = d.type;
if (currentType == QMetaType::SChar || currentType == QMetaType::Char)
currentType = QMetaType::UInt;
if (targetTypeId == QMetaType::SChar || currentType == QMetaType::Char)
targetTypeId = QMetaType::UInt;
- if (uint(targetTypeId) == uint(QMetaType::Float)) targetTypeId = QVariant::Double;
-
+ if (currentType == QMetaType::Short || currentType == QMetaType::UShort)
+ currentType = QMetaType::Int;
+ if (targetTypeId == QMetaType::Short || currentType == QMetaType::UShort)
+ targetTypeId = QMetaType::Int;
+ if (currentType == QMetaType::Float)
+ currentType = QMetaType::Double;
+ if (targetTypeId == QMetaType::Float)
+ targetTypeId = QMetaType::Double;
if (currentType == uint(targetTypeId))
return true;