summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/activeqt/container/qaxbase.cpp9
-rw-r--r--src/activeqt/container/qaxbase.h14
-rw-r--r--src/activeqt/control/qaxfactory.h13
-rw-r--r--src/activeqt/control/qaxserver.cpp15
-rw-r--r--src/activeqt/shared/qaxtypes.cpp6
5 files changed, 23 insertions, 34 deletions
diff --git a/src/activeqt/container/qaxbase.cpp b/src/activeqt/container/qaxbase.cpp
index 8d9ec32..6732d6c 100644
--- a/src/activeqt/container/qaxbase.cpp
+++ b/src/activeqt/container/qaxbase.cpp
@@ -4398,11 +4398,12 @@ QVariant QAxBase::asVariant() const
else if (d->ptr)
qvar.setValue(d->ptr);
} else {
- cn = cn.mid(cn.lastIndexOf(':') + 1);
+ cn = cn.mid(cn.lastIndexOf(':') + 1) + '*';
QObject *object = qObject();
- if (QMetaType::type(cn))
- qvar = QVariant(qRegisterMetaType<QObject*>(cn + '*'), &object);
-// qvar.setValue(qObject(), cn + '*');
+ int typeId = QMetaType::type(cn);
+ if (!typeId)
+ typeId = qRegisterMetaType<QObject *>(cn);
+ qvar = QVariant(typeId, &object);
}
return qvar;
diff --git a/src/activeqt/container/qaxbase.h b/src/activeqt/container/qaxbase.h
index 52d2ff1..cb8a7f1 100644
--- a/src/activeqt/container/qaxbase.h
+++ b/src/activeqt/container/qaxbase.h
@@ -215,18 +215,8 @@ QT_END_NAMESPACE
#ifndef Q_COM_METATYPE_DECLARED
#define Q_COM_METATYPE_DECLARED
-QT_BEGIN_NAMESPACE namespace QtPrivate {
-template <> struct IsPointerToTypeDerivedFromQObject<IUnknown*> {
- enum { Value = false };
-};
-} QT_END_NAMESPACE
-
-QT_BEGIN_NAMESPACE namespace QtPrivate {
-template <> struct IsPointerToTypeDerivedFromQObject<IDispatch*> {
- enum { Value = false };
-};
-} QT_END_NAMESPACE
-
+Q_DECLARE_OPAQUE_POINTER(IUnknown*)
+Q_DECLARE_OPAQUE_POINTER(IDispatch*)
Q_DECLARE_METATYPE(IUnknown*)
Q_DECLARE_METATYPE(IDispatch*)
diff --git a/src/activeqt/control/qaxfactory.h b/src/activeqt/control/qaxfactory.h
index 3463fca..e262292 100644
--- a/src/activeqt/control/qaxfactory.h
+++ b/src/activeqt/control/qaxfactory.h
@@ -299,17 +299,8 @@ QT_END_NAMESPACE
#ifndef Q_COM_METATYPE_DECLARED
#define Q_COM_METATYPE_DECLARED
-QT_BEGIN_NAMESPACE namespace QtPrivate {
-template <> struct IsPointerToTypeDerivedFromQObject<IUnknown*> {
- enum { Value = false };
-};
-} QT_END_NAMESPACE
-
-QT_BEGIN_NAMESPACE namespace QtPrivate {
-template <> struct IsPointerToTypeDerivedFromQObject<IDispatch*> {
- enum { Value = false };
-};
-} QT_END_NAMESPACE
+Q_DECLARE_OPAQUE_POINTER(IUnknown*)
+Q_DECLARE_OPAQUE_POINTER(IDispatch*)
Q_DECLARE_METATYPE(IUnknown*)
Q_DECLARE_METATYPE(IDispatch*)
diff --git a/src/activeqt/control/qaxserver.cpp b/src/activeqt/control/qaxserver.cpp
index d6925fb..06344b6 100644
--- a/src/activeqt/control/qaxserver.cpp
+++ b/src/activeqt/control/qaxserver.cpp
@@ -90,8 +90,9 @@ QAxFactory *qAxFactory()
// register all types with metatype system as pointers
QStringList keys(qax_factory->featureList());
for (int i = 0; i < keys.count(); ++i) {
- QString key(keys.at(i));
- qRegisterMetaType((key + QLatin1Char('*')).toLatin1(), (void**)0);
+ QByteArray pointerType = keys.at(i).toLatin1() + '*';
+ if (!QMetaType::type(pointerType.constData()))
+ qRegisterMetaType<void *>(pointerType);
}
}
return qax_factory;
@@ -493,8 +494,8 @@ static const char* const type_map[][2] =
static QByteArray convertTypes(const QByteArray &qtype, bool *ok)
{
- qRegisterMetaType("IDispatch*", (void**)0);
- qRegisterMetaType("IUnknown*", (void**)0);
+ qRegisterMetaType<IDispatch *>("IDispatch*");
+ qRegisterMetaType<IUnknown *>("IUnknown*");
*ok = false;
@@ -1195,10 +1196,12 @@ extern "C" HRESULT __stdcall DumpIDL(const QString &outfile, const QString &ver)
QByteArray cleanType = qax_clean_type(*key, mo).toLatin1();
out << "\tcoclass " << cleanType << ';' << endl;
subtypes.append(cleanType);
- qRegisterMetaType(cleanType, (void**)0);
+ if (!QMetaType::type(cleanType))
+ qRegisterMetaType<void *>(cleanType);
cleanType += '*';
subtypes.append(cleanType);
- qRegisterMetaType(cleanType, (void**)0);
+ if (!QMetaType::type(cleanType))
+ qRegisterMetaType<void *>(cleanType);
}
}
out << endl;
diff --git a/src/activeqt/shared/qaxtypes.cpp b/src/activeqt/shared/qaxtypes.cpp
index 52bbf86..566bfb0 100644
--- a/src/activeqt/shared/qaxtypes.cpp
+++ b/src/activeqt/shared/qaxtypes.cpp
@@ -1111,7 +1111,11 @@ QVariant VARIANTToQVariant(const VARIANT &arg, const QByteArray &typeName, uint
if (iface) {
QObject *qObj = iface->qObject();
iface->Release();
- var = QVariant(qRegisterMetaType<QObject*>(qObj ? QByteArray(qObj->metaObject()->className()) + '*' : typeName), &qObj);
+ QByteArray pointerType = qObj ? QByteArray(qObj->metaObject()->className()) + '*' : typeName;
+ int pointerTypeId = QMetaType::type(pointerType);
+ if (!pointerTypeId)
+ pointerTypeId = qRegisterMetaType<QObject *>(pointerType);
+ var = QVariant(pointerTypeId, &qObj);
} else
#endif
{