summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2015-01-19 13:40:02 +0100
committerFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2015-01-19 13:40:02 +0100
commitca5df01521f48a371b11a4cad840f342c903ae8f (patch)
treee60742a26b3957e6cb97115d8864132e7cd2a7ad
parent85c5208dbb991200041a988f50d381688f1d773f (diff)
parentbf72626849b7aabbe4dc01ca9b40e2f5f78e33a1 (diff)
Merge remote-tracking branch 'origin/5.4' into dev
Conflicts: .qmake.conf Change-Id: I4a6ccd88ddb51cbb750d08e6b271089f2edbb8b9
-rw-r--r--src/activeqt/control/qaxserverbase.cpp23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/activeqt/control/qaxserverbase.cpp b/src/activeqt/control/qaxserverbase.cpp
index c0f0512..b31e9ad 100644
--- a/src/activeqt/control/qaxserverbase.cpp
+++ b/src/activeqt/control/qaxserverbase.cpp
@@ -2457,19 +2457,18 @@ HRESULT WINAPI QAxServerBase::Invoke(DISPID dispidMember, REFIID riid,
// return value
if (!type.isEmpty() && type != "void") {
QVariant::Type vt = QVariant::nameToType(type);
- if (vt == QVariant::UserType)
- vt = QVariant::Invalid;
- varp[0] = QVariant(vt);
- if (varp[0].type() == QVariant::Invalid && mo->indexOfEnumerator(slot.typeName()) != -1)
- varp[0] = QVariant(QVariant::Int);
-
- if (varp[0].type() == QVariant::Invalid) {
- if (type == "QVariant")
- argv[0] = varp;
- else
- argv[0] = 0;
+ if (vt == int(QMetaType::QVariant)) {
+ argv[0] = varp;
} else {
- argv[0] = const_cast<void*>(varp[0].constData());
+ if (vt == QVariant::UserType)
+ vt = QVariant::Invalid;
+ else if (vt == QVariant::Invalid && mo->indexOfEnumerator(slot.typeName()) != -1)
+ vt = QVariant::Int;
+ varp[0] = QVariant(vt);
+ if (varp[0].type() == QVariant::Invalid)
+ argv[0] = Q_NULLPTR;
+ else
+ argv[0] = const_cast<void*>(varp[0].constData());
}
if (type.endsWith('*')) {
argv_pointer[0] = argv[0];