diff options
author | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2015-01-19 13:40:02 +0100 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2015-01-19 13:40:02 +0100 |
commit | ca5df01521f48a371b11a4cad840f342c903ae8f (patch) | |
tree | e60742a26b3957e6cb97115d8864132e7cd2a7ad | |
parent | 85c5208dbb991200041a988f50d381688f1d773f (diff) | |
parent | bf72626849b7aabbe4dc01ca9b40e2f5f78e33a1 (diff) |
Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
.qmake.conf
Change-Id: I4a6ccd88ddb51cbb750d08e6b271089f2edbb8b9
-rw-r--r-- | src/activeqt/control/qaxserverbase.cpp | 23 |
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]; |