summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2020-05-27 12:26:00 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2020-05-29 10:14:28 +0200
commitd3d9850a9200c9de898248884da32b510a1d4d4e (patch)
tree4bed48bbf841c96a793413f7dfe6a7035683d3e2
parentf5982f32cd38fb8b63522fe4390ac10eb2b1b157 (diff)
Move some of the internal functions from QAxBase to QAxBasePrivate
By making the QAxWidget/ObjectPrivate inherit QAxBasePrivate, some virtual internal functions can be moved there and QAxSignalBridge can also be removed. Change-Id: Ic53cb61afe3fb2a431c149b1b73697bbf287b6b0 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
-rw-r--r--src/activeqt/container/qaxbase.cpp80
-rw-r--r--src/activeqt/container/qaxbase.h17
-rw-r--r--src/activeqt/container/qaxbase_p.h27
-rw-r--r--src/activeqt/container/qaxobject.cpp82
-rw-r--r--src/activeqt/container/qaxobject.h7
-rw-r--r--src/activeqt/container/qaxobject_p.h13
-rw-r--r--src/activeqt/container/qaxwidget.cpp75
-rw-r--r--src/activeqt/container/qaxwidget.h5
-rw-r--r--src/activeqt/container/qaxwidget_p.h13
9 files changed, 154 insertions, 165 deletions
diff --git a/src/activeqt/container/qaxbase.cpp b/src/activeqt/container/qaxbase.cpp
index dc0a63d..6e20ae4 100644
--- a/src/activeqt/container/qaxbase.cpp
+++ b/src/activeqt/container/qaxbase.cpp
@@ -392,8 +392,8 @@ public:
int index = -1;
// emit the generic signal "as is"
- combase->d->signalBridge->emitSignal(QLatin1String(signame),
- pDispParams->cArgs, pDispParams->rgvarg);
+ combase->d->emitSignal(QLatin1String(signame),
+ pDispParams->cArgs, pDispParams->rgvarg);
HRESULT hres = S_OK;
// get the signal information from the metaobject
@@ -464,7 +464,7 @@ public:
if (ok) {
// emit the generated signal if everything went well
- QAxBase::axBase_qt_static_metacall(combase, QMetaObject::InvokeMetaMethod, index - meta->methodOffset(), argv);
+ QAxBasePrivate::qtStaticMetaCall(combase, QMetaObject::InvokeMetaMethod, index - meta->methodOffset(), argv);
// update the VARIANT for references and free memory
for (p = 0; p < pcount; ++p) {
bool out;
@@ -509,7 +509,7 @@ public:
return S_OK;
// emit the generic signal
- combase->d->signalBridge->emitPropertyChanged(QString::fromLatin1(propname));
+ combase->d->emitPropertyChanged(QString::fromLatin1(propname));
QByteArray signame = propsigs.value(dispID);
if (signame.isEmpty())
@@ -532,8 +532,8 @@ public:
argv[1] = &var;
// emit the "changed" signal
- QAxBase::axBase_qt_static_metacall(combase, QMetaObject::InvokeMetaMethod,
- index - meta->methodOffset(), argv);
+ QAxBasePrivate::qtStaticMetaCall(combase, QMetaObject::InvokeMetaMethod,
+ index - meta->methodOffset(), argv);
}
return S_OK;
}
@@ -573,8 +573,8 @@ public:
\class QAxBasePrivate
*/
-QAxBasePrivate::QAxBasePrivate(QAxBase *b)
- : q(b), useEventSink(true), useMetaObject(true), useClassInfo(true),
+QAxBasePrivate::QAxBasePrivate()
+ : useEventSink(true), useMetaObject(true), useClassInfo(true),
cachedMetaObject(false), initialized(false), tryCache(false)
{
// protect initialization
@@ -598,7 +598,6 @@ QAxBasePrivate::~QAxBasePrivate()
}
CoFreeUnusedLibraries();
- delete signalBridge;
}
QByteArray QAxEventSink::findProperty(DISPID dispID)
@@ -825,19 +824,9 @@ QVariant QAxBasePrivate::VARIANTToQVariant(const VARIANT &arg, const QByteArray
*/
/*!
- Creates a QAxBase object that wraps the COM object \a iface. If \a
- iface is 0 (the default), use setControl() to instantiate a COM
- object.
+ Creates a QAxBase object.
*/
-QAxBase::QAxBase(IUnknown *iface)
-{
- d = new QAxBasePrivate(this);
- d->ptr = iface;
- if (d->ptr) {
- d->ptr->AddRef();
- d->initialized = true;
- }
-}
+QAxBase::QAxBase() = default;
/*!
Shuts down the COM object and destroys the QAxBase object.
@@ -848,9 +837,6 @@ QAxBase::~QAxBase()
{
clear();
-
- delete d;
- d = nullptr;
}
/*!
@@ -1171,9 +1157,15 @@ bool QAxBase::initialize(IUnknown **ptr)
/*!
\internal
*/
-void QAxBase::axBaseInit(QAxBasePrivateSignalBridge *b)
+void QAxBase::axBaseInit(QAxBasePrivate *b, IUnknown *iface)
{
- d->signalBridge = b;
+ d = b;
+ d->q = this;
+ d->ptr = iface;
+ if (d->ptr) {
+ d->ptr->AddRef();
+ d->initialized = true;
+ }
}
/*!
@@ -3044,7 +3036,7 @@ const QMetaObject *QAxBase::axBaseMetaObject() const
{
if (d->metaobj)
return d->metaobj;
- const QMetaObject* parentObject = parentMetaObject();
+ const QMetaObject* parentObject = d->parentMetaObject();
if (!d->ptr && !d->initialized) {
const_cast<QAxBase*>(this)->initialize(&d->ptr);
@@ -3058,7 +3050,7 @@ const QMetaObject *QAxBase::axBaseMetaObject() const
// return the default meta object if not yet initialized
if (!d->ptr || !d->useMetaObject)
- return fallbackMetaObject();
+ return d->fallbackMetaObject();
MetaObjectGenerator generator(const_cast<QAxBase *>(this), d);
return generator.metaObject(parentObject);
@@ -3195,7 +3187,7 @@ void QAxBasePrivate::handleException(tagEXCEPINFO *exc, const QString &name)
if (helpContext && !help.isEmpty())
help += QString::fromLatin1(" [%1]").arg(helpContext);
- signalBridge->emitException(code, source, desc, help);
+ emitException(code, source, desc, help);
if (!QAxEventSink::signalHasReceivers(q->qObject(), "exception(int,QString,QString,QString)")) {
qWarning(R"(QAxBase: Error calling IDispatch member %s: Exception thrown by server
Code : %d
@@ -3485,10 +3477,7 @@ int QAxBase::internalInvoke(QMetaObject::Call call, int index, void **v)
return index;
}
-/*!
- \internal
-*/
-int QAxBase::axBase_qt_static_metacall(QAxBase *_t, QMetaObject::Call _c, int _id, void **_a)
+int QAxBasePrivate::qtStaticMetaCall(QAxBase *_t, QMetaObject::Call _c, int _id, void **_a)
{
if (_c != QMetaObject::InvokeMetaMethod)
return 0;
@@ -3507,25 +3496,22 @@ int QAxBase::axBase_qt_static_metacall(QAxBase *_t, QMetaObject::Call _c, int _i
return 0;
}
-/*!
- \internal
-*/
-int QAxBase::axBase_qt_metacall(QMetaObject::Call call, int id, void **v)
+int QAxBasePrivate::qtMetaCall(QMetaObject::Call call, int id, void **v)
{
- const QMetaObject *mo = axBaseMetaObject();
- if (isNull() && mo->property(id + mo->propertyOffset()).name() != QByteArray("control")) {
+ const QMetaObject *mo = q->axBaseMetaObject();
+ if (q->isNull() && mo->property(id + mo->propertyOffset()).name() != QByteArray("control")) {
qWarning("QAxBase::qt_metacall: Object is not initialized, or initialization failed");
return id;
}
switch(call) {
case QMetaObject::InvokeMetaMethod:
- id = axBase_qt_static_metacall(this, call, id, v);
+ id = qtStaticMetaCall(q, call, id, v);
break;
case QMetaObject::ReadProperty:
case QMetaObject::WriteProperty:
case QMetaObject::ResetProperty:
- id = internalProperty(call, id, v);
+ id = q->internalProperty(call, id, v);
break;
case QMetaObject::QueryPropertyScriptable:
case QMetaObject::QueryPropertyDesignable:
@@ -4249,7 +4235,7 @@ QVariant QAxBase::asVariant() const
}
QVariant qvar;
- QByteArray cn(className());
+ QByteArray cn(d->className());
if (cn == "QAxObject" || cn == "QAxWidget" || cn == "QAxBase") {
if (d->dispatch())
qvar.setValue(d->dispatch());
@@ -4287,13 +4273,19 @@ void *qax_createObjectWrapper(int metaType, IUnknown *iface)
}
/*!
- \fn QObject *QAxBase::qObject() const
\internal
*/
+QObject *QAxBase::qObject() const
+{
+ return d->qObject();
+}
/*!
- \fn const char *QAxBase::className() const
\internal
*/
+const char *QAxBase::className() const
+{
+ return d->className();
+}
QT_END_NAMESPACE
diff --git a/src/activeqt/container/qaxbase.h b/src/activeqt/container/qaxbase.h
index 498e9ee..51e1e5f 100644
--- a/src/activeqt/container/qaxbase.h
+++ b/src/activeqt/container/qaxbase.h
@@ -65,14 +65,12 @@ class QUuid;
class QAxEventSink;
class QAxObject;
class QAxBasePrivate;
-class QAxBasePrivateSignalBridge;
class QAxBase
{
public:
using PropertyBag = QMap<QString, QVariant>;
- explicit QAxBase(IUnknown *iface = nullptr);
virtual ~QAxBase();
QString control() const;
@@ -99,11 +97,9 @@ public:
QAxObject* querySubObject(const char *name, QList<QVariant> &vars);
const QMetaObject *axBaseMetaObject() const;
- int axBase_qt_metacall(QMetaObject::Call, int, void **);
- static int axBase_qt_static_metacall(QAxBase *, QMetaObject::Call, int, void **);
- virtual QObject *qObject() const = 0;
- virtual const char *className() const = 0;
+ const char *className() const;
+ QObject *qObject() const;
PropertyBag propertyBag() const;
void setPropertyBag(const PropertyBag&);
@@ -131,6 +127,8 @@ public:
void setClassContext(ulong classContext);
protected:
+ explicit QAxBase();
+
virtual bool initialize(IUnknown** ptr);
bool initializeRemote(IUnknown** ptr);
bool initializeLicensed(IUnknown** ptr);
@@ -147,8 +145,7 @@ protected:
const QVariant &var5, const QVariant &var6,
const QVariant &var7, const QVariant &var8);
- virtual const QMetaObject *fallbackMetaObject() const = 0;
- void axBaseInit(QAxBasePrivateSignalBridge *b);
+ void axBaseInit(QAxBasePrivate *b, IUnknown *iface = nullptr);
private:
enum DynamicCallHelperFlags {
@@ -157,11 +154,11 @@ private:
friend class QAxScript;
friend class QAxEventSink;
+ friend class QAxBasePrivate;
friend void *qax_createObjectWrapper(int, IUnknown*);
bool initializeLicensedHelper(void *factory, const QString &key, IUnknown **ptr);
- QAxBasePrivate *d;
+ QAxBasePrivate *d = nullptr;
- virtual const QMetaObject *parentMetaObject() const = 0;
int internalProperty(QMetaObject::Call, int index, void **v);
int internalInvoke(QMetaObject::Call, int index, void **v);
bool dynamicCallHelper(const char *name, void *out, QList<QVariant> &var,
diff --git a/src/activeqt/container/qaxbase_p.h b/src/activeqt/container/qaxbase_p.h
index d9c49cb..c7b11f2 100644
--- a/src/activeqt/container/qaxbase_p.h
+++ b/src/activeqt/container/qaxbase_p.h
@@ -76,25 +76,27 @@ QT_BEGIN_NAMESPACE
class QAxBase;
class QAxEventSink;
-class QAxBasePrivateSignalBridge
+class QAxBasePrivate
{
+ Q_DISABLE_COPY_MOVE(QAxBasePrivate)
public:
- virtual ~QAxBasePrivateSignalBridge() = default;
+ using UuidEventSinkHash = QHash<QUuid, QAxEventSink*>;
+
+ explicit QAxBasePrivate();
+ ~QAxBasePrivate();
+
+ virtual QObject *qObject() const = 0;
+ virtual const char *className() const = 0;
+ virtual const QMetaObject *fallbackMetaObject() const = 0;
+ virtual const QMetaObject *parentMetaObject() const = 0;
virtual void emitException(int code, const QString &source, const QString &desc,
const QString &help) = 0;
virtual void emitPropertyChanged(const QString &name) = 0;
virtual void emitSignal(const QString &name, int argc, void *argv) = 0;
-};
-class QAxBasePrivate
-{
- Q_DISABLE_COPY_MOVE(QAxBasePrivate)
-public:
- using UuidEventSinkHash = QHash<QUuid, QAxEventSink*>;
-
- explicit QAxBasePrivate(QAxBase *b);
- ~QAxBasePrivate();
+ int qtMetaCall(QMetaObject::Call, int, void **);
+ static int qtStaticMetaCall(QAxBase *, QMetaObject::Call, int, void **);
IDispatch *dispatch() const
{
@@ -111,7 +113,7 @@ public:
static QVariant VARIANTToQVariant(const VARIANT &arg, const QByteArray &typeName, uint type = 0);
- QAxBase *q;
+ QAxBase *q = nullptr;
QString ctrl;
UuidEventSinkHash eventSink;
uint useEventSink :1;
@@ -135,7 +137,6 @@ public:
mutable QMap<QString, LONG> verbs;
QMetaObject *metaobj = nullptr;
- QAxBasePrivateSignalBridge *signalBridge = nullptr;
};
QT_END_NAMESPACE
diff --git a/src/activeqt/container/qaxobject.cpp b/src/activeqt/container/qaxobject.cpp
index 4a30803..d19fede 100644
--- a/src/activeqt/container/qaxobject.cpp
+++ b/src/activeqt/container/qaxobject.cpp
@@ -60,31 +60,6 @@
QT_BEGIN_NAMESPACE
-class QAxObjectSignalBridge : public QAxBasePrivateSignalBridge
-{
-public:
- explicit QAxObjectSignalBridge(QAxBaseObject *o) : m_o(o) {}
-
- void emitException(int code, const QString &source, const QString &desc,
- const QString &help) override
- {
- emit m_o->exception(code, source, desc, help);
- }
-
- void emitPropertyChanged(const QString &name) override
- {
- emit m_o->propertyChanged(name);
- }
-
- void emitSignal(const QString &name, int argc, void *argv) override
- {
- emit m_o->signal(name, argc, argv);
- }
-
-private:
- QAxBaseObject *m_o;
-};
-
QAxBaseObject::QAxBaseObject(QObjectPrivate &d, QObject *parent)
: QObject(d, parent)
{
@@ -156,6 +131,25 @@ QAxBaseObject::QAxBaseObject(QObjectPrivate &d, QObject *parent)
\sa QAxBaseWidget::exception()
*/
+void QAxObjectPrivate::emitException(int code, const QString &source, const QString &desc,
+ const QString &help)
+{
+ Q_Q(QAxObject);
+ emit q->exception(code, source, desc, help);
+}
+
+void QAxObjectPrivate::emitPropertyChanged(const QString &name)
+{
+ Q_Q(QAxObject);
+ emit q->propertyChanged(name);
+}
+
+void QAxObjectPrivate::emitSignal(const QString &name, int argc, void *argv)
+{
+ Q_Q(QAxObject);
+ emit q->signal(name, argc, argv);
+}
+
/*!
\class QAxObject
\brief The QAxObject class provides a QObject that wraps a COM object.
@@ -195,7 +189,8 @@ QAxBaseObject::QAxBaseObject(QObjectPrivate &d, QObject *parent)
QAxObject::QAxObject(QObject *parent)
: QAxBaseObject(*new QAxObjectPrivate, parent)
{
- axBaseInit(new QAxObjectSignalBridge(this));
+ Q_D(QAxObject);
+ axBaseInit(d);
}
/*!
@@ -207,7 +202,8 @@ QAxObject::QAxObject(QObject *parent)
QAxObject::QAxObject(const QString &c, QObject *parent)
: QAxBaseObject(*new QAxObjectPrivate, parent)
{
- axBaseInit(new QAxObjectSignalBridge(this));
+ Q_D(QAxObject);
+ axBaseInit(d);
setControl(c);
}
@@ -216,9 +212,10 @@ QAxObject::QAxObject(const QString &c, QObject *parent)
iface. \a parent is propagated to the QObject constructor.
*/
QAxObject::QAxObject(IUnknown *iface, QObject *parent)
-: QAxBaseObject(*new QAxObjectPrivate, parent), QAxBase(iface)
+: QAxBaseObject(*new QAxObjectPrivate, parent)
{
- axBaseInit(new QAxObjectSignalBridge(this));
+ Q_D(QAxObject);
+ axBaseInit(d, iface);
}
/*!
@@ -268,15 +265,12 @@ void QAxObjectPrivate::clear()
*/
void QAxObject::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
- QAxBase::axBase_qt_static_metacall(static_cast<QAxObject *>(_o), _c, _id, _a);
+ QAxBasePrivate::qtStaticMetaCall(static_cast<QAxObject *>(_o), _c, _id, _a);
}
-/*!
- \internal
-*/
-const QMetaObject *QAxObject::fallbackMetaObject() const
+const QMetaObject *QAxObjectPrivate::fallbackMetaObject() const
{
- return &staticMetaObject;
+ return &QAxObject::staticMetaObject;
}
/*!
@@ -287,10 +281,7 @@ const QMetaObject *QAxObject::metaObject() const
return QAxBase::axBaseMetaObject();
}
-/*!
- \internal
-*/
-const QMetaObject *QAxObject::parentMetaObject() const
+const QMetaObject *QAxObjectPrivate::parentMetaObject() const
{
return &QAxBaseObject::staticMetaObject;
}
@@ -305,10 +296,12 @@ void *QAxObject::qt_metacast(const char *cname)
return QAxBaseObject::qt_metacast(cname);
}
-/*!
- \internal
-*/
-const char *QAxObject::className() const
+QObject* QAxObjectPrivate::qObject() const
+{
+ Q_Q(const QAxObject);
+ return static_cast<QObject *>(const_cast<QAxObject *>(q));
+}
+const char *QAxObjectPrivate::className() const
{
return "QAxObject";
}
@@ -318,10 +311,11 @@ const char *QAxObject::className() const
*/
int QAxObject::qt_metacall(QMetaObject::Call call, int id, void **v)
{
+ Q_D(QAxObject);
id = QAxBaseObject::qt_metacall(call, id, v);
if (id < 0)
return id;
- return QAxBase::axBase_qt_metacall(call, id, v);
+ return d->qtMetaCall(call, id, v);
}
/*!
diff --git a/src/activeqt/container/qaxobject.h b/src/activeqt/container/qaxobject.h
index 70d92d2..c8a465f 100644
--- a/src/activeqt/container/qaxobject.h
+++ b/src/activeqt/container/qaxobject.h
@@ -79,9 +79,6 @@ class QAxObject : public QAxBaseObject, public QAxBase
friend class QAxEventSink;
Q_DECLARE_PRIVATE(QAxObject)
public:
- QObject* qObject() const override { return static_cast<QObject *>(const_cast<QAxObject *>(this)); }
- const char *className() const override;
-
explicit QAxObject(QObject *parent = nullptr);
explicit QAxObject(const QString &c, QObject *parent = nullptr);
explicit QAxObject(IUnknown *iface, QObject *parent = nullptr);
@@ -103,10 +100,6 @@ public:
protected:
void connectNotify(const QMetaMethod &signal) override;
- const QMetaObject *fallbackMetaObject() const override;
-
-private:
- const QMetaObject *parentMetaObject() const override;
};
template <> inline QAxObject *qobject_cast<QAxObject*>(const QObject *o)
diff --git a/src/activeqt/container/qaxobject_p.h b/src/activeqt/container/qaxobject_p.h
index 43c8df1..f910887 100644
--- a/src/activeqt/container/qaxobject_p.h
+++ b/src/activeqt/container/qaxobject_p.h
@@ -64,14 +64,25 @@
#include <QtAxContainer/qaxobject.h>
#include <private/qobject_p.h>
+#include <private/qaxbase_p.h>
QT_BEGIN_NAMESPACE
-class QAxObjectPrivate : public QObjectPrivate
+class QAxObjectPrivate : public QObjectPrivate, public QAxBasePrivate
{
Q_DECLARE_PUBLIC(QAxObject)
public:
void clear();
+
+ QObject* qObject() const override;
+ const char *className() const override;
+ const QMetaObject *fallbackMetaObject() const override;
+ const QMetaObject *parentMetaObject() const override;
+
+ void emitException(int code, const QString &source, const QString &desc,
+ const QString &help) override;
+ void emitPropertyChanged(const QString &name) override;
+ void emitSignal(const QString &name, int argc, void *argv) override;
};
QT_END_NAMESPACE
diff --git a/src/activeqt/container/qaxwidget.cpp b/src/activeqt/container/qaxwidget.cpp
index 5d2aa53..5c0a4ac 100644
--- a/src/activeqt/container/qaxwidget.cpp
+++ b/src/activeqt/container/qaxwidget.cpp
@@ -111,30 +111,24 @@
QT_BEGIN_NAMESPACE
-class QAxWidgetSignalBridge : public QAxBasePrivateSignalBridge
+void QAxWidgetPrivate::emitException(int code, const QString &source, const QString &desc,
+ const QString &help)
{
-public:
- explicit QAxWidgetSignalBridge(QAxBaseWidget *w) : m_w(w) {}
-
- void emitException(int code, const QString &source, const QString &desc,
- const QString &help) override
- {
- emit m_w->exception(code, source, desc, help);
- }
-
- void emitPropertyChanged(const QString &name) override
- {
- emit m_w->propertyChanged(name);
- }
+ Q_Q(QAxWidget);
+ emit q->exception(code, source, desc, help);
+}
- void emitSignal(const QString &name, int argc, void *argv) override
- {
- emit m_w->signal(name, argc, argv);
- }
+void QAxWidgetPrivate::emitPropertyChanged(const QString &name)
+{
+ Q_Q(QAxWidget);
+ emit q->propertyChanged(name);
+}
-private:
- QAxBaseWidget *m_w;
-};
+void QAxWidgetPrivate::emitSignal(const QString &name, int argc, void *argv)
+{
+ Q_Q(QAxWidget);
+ emit q->signal(name, argc, argv);
+}
/* \class QAxHostWidget
\brief The QAxHostWidget class is the actual container widget.
@@ -2068,7 +2062,8 @@ QAxBaseWidget::QAxBaseWidget(QWidgetPrivate &d, QWidget *parent, Qt::WindowFlags
QAxWidget::QAxWidget(QWidget *parent, Qt::WindowFlags f)
: QAxBaseWidget(*new QAxWidgetPrivate, parent, f)
{
- axBaseInit(new QAxWidgetSignalBridge(this));
+ Q_D(QAxWidget);
+ axBaseInit(d);
}
/*!
@@ -2080,7 +2075,8 @@ QAxWidget::QAxWidget(QWidget *parent, Qt::WindowFlags f)
QAxWidget::QAxWidget(const QString &c, QWidget *parent, Qt::WindowFlags f)
: QAxBaseWidget(*new QAxWidgetPrivate, parent, f)
{
- axBaseInit(new QAxWidgetSignalBridge(this));
+ Q_D(QAxWidget);
+ axBaseInit(d);
setControl(c);
}
@@ -2089,9 +2085,10 @@ QAxWidget::QAxWidget(const QString &c, QWidget *parent, Qt::WindowFlags f)
\a parent and \a f are propagated to the QWidget contructor.
*/
QAxWidget::QAxWidget(IUnknown *iface, QWidget *parent, Qt::WindowFlags f)
-: QAxBaseWidget(*new QAxWidgetPrivate, parent, f), QAxBase(iface)
+: QAxBaseWidget(*new QAxWidgetPrivate, parent, f)
{
- axBaseInit(new QAxWidgetSignalBridge(this));
+ Q_D(QAxWidget);
+ axBaseInit(d, iface);
}
/*!
@@ -2274,15 +2271,12 @@ bool QAxWidget::doVerb(const QString &verb)
*/
void QAxWidget::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
- QAxBase::axBase_qt_static_metacall(static_cast<QAxWidget *>(_o), _c, _id, _a);
+ QAxBasePrivate::qtStaticMetaCall(static_cast<QAxWidget *>(_o), _c, _id, _a);
}
-/*!
- \internal
-*/
-const QMetaObject *QAxWidget::fallbackMetaObject() const
+const QMetaObject *QAxWidgetPrivate::fallbackMetaObject() const
{
- return &staticMetaObject;
+ return &QAxWidget::staticMetaObject;
}
/*!
@@ -2293,10 +2287,7 @@ const QMetaObject *QAxWidget::metaObject() const
return QAxBase::axBaseMetaObject();
}
-/*!
- \internal
-*/
-const QMetaObject *QAxWidget::parentMetaObject() const
+const QMetaObject *QAxWidgetPrivate::parentMetaObject() const
{
return &QAxBaseWidget::staticMetaObject;
}
@@ -2311,10 +2302,13 @@ void *QAxWidget::qt_metacast(const char *cname)
return QAxBaseWidget::qt_metacast(cname);
}
-/*!
- \internal
-*/
-const char *QAxWidget::className() const
+QObject* QAxWidgetPrivate::qObject() const
+{
+ Q_Q(const QAxWidget);
+ return static_cast<QObject *>(const_cast<QAxWidget *>(q));
+}
+
+const char *QAxWidgetPrivate::className() const
{
return "QAxWidget";
}
@@ -2324,10 +2318,11 @@ const char *QAxWidget::className() const
*/
int QAxWidget::qt_metacall(QMetaObject::Call call, int id, void **v)
{
+ Q_D(QAxWidget);
id = QAxBaseWidget::qt_metacall(call, id, v);
if (id < 0)
return id;
- return QAxBase::axBase_qt_metacall(call, id, v);
+ return d->qtMetaCall(call, id, v);
}
/*!
diff --git a/src/activeqt/container/qaxwidget.h b/src/activeqt/container/qaxwidget.h
index 25a6f75..c58422d 100644
--- a/src/activeqt/container/qaxwidget.h
+++ b/src/activeqt/container/qaxwidget.h
@@ -82,9 +82,6 @@ protected:
class QAxWidget : public QAxBaseWidget, public QAxBase
{
public:
- QObject* qObject() const override { return const_cast<QAxWidget *>(this); }
- const char *className() const override;
-
explicit QAxWidget(QWidget* parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
explicit QAxWidget(const QString &c, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
explicit QAxWidget(IUnknown *iface, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
@@ -119,12 +116,10 @@ protected:
virtual bool translateKeyEvent(int message, int keycode) const;
void connectNotify(const QMetaMethod &signal) override;
- const QMetaObject *fallbackMetaObject() const override;
private:
Q_DECLARE_PRIVATE(QAxWidget)
friend class QAxClientSite;
- const QMetaObject *parentMetaObject() const override;
};
template <> inline QAxWidget *qobject_cast<QAxWidget*>(const QObject *o)
diff --git a/src/activeqt/container/qaxwidget_p.h b/src/activeqt/container/qaxwidget_p.h
index c0f8e7e..b327bed 100644
--- a/src/activeqt/container/qaxwidget_p.h
+++ b/src/activeqt/container/qaxwidget_p.h
@@ -64,17 +64,28 @@
#include <QtAxContainer/qaxwidget.h>
#include <private/qwidget_p.h>
+#include <private/qaxbase_p.h>
QT_BEGIN_NAMESPACE
class QAxClientSite;
-class QAxWidgetPrivate : public QWidgetPrivate
+class QAxWidgetPrivate : public QWidgetPrivate, public QAxBasePrivate
{
Q_DECLARE_PUBLIC(QAxWidget)
public:
void clear();
+ QObject* qObject() const override;
+ const char *className() const override;
+ const QMetaObject *fallbackMetaObject() const override;
+ const QMetaObject *parentMetaObject() const override;
+
+ void emitException(int code, const QString &source, const QString &desc,
+ const QString &help) override;
+ void emitPropertyChanged(const QString &name) override;
+ void emitSignal(const QString &name, int argc, void *argv) override;
+
QAxClientSite *container = nullptr;
};