diff options
| author | BogDan Vatra <bogdan@kdab.com> | 2018-06-23 18:27:48 -0400 |
|---|---|---|
| committer | Jani Heikkinen <jani.heikkinen@qt.io> | 2018-11-27 04:11:23 +0000 |
| commit | e4631d1a6aa20dfdd32fff2e3764223435fe427f (patch) | |
| tree | dc7569aae55ee4ab280174b9734b78bc37ce245c /src/remoteobjects/qremoteobjectsource.cpp | |
| parent | 41ed53bf6603858856124f9e8593b804f4e6d1c8 (diff) | |
Handle null QAIM propertyv5.12.0-rc2v5.12.0
Even if a QAIM property is nullptr, we still need to treat it as a
model.
Task-number: QTBUG-71987
Change-Id: Iea8b3bfda88c564c561a7ab6ed293fd0540f5de4
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
Diffstat (limited to 'src/remoteobjects/qremoteobjectsource.cpp')
| -rw-r--r-- | src/remoteobjects/qremoteobjectsource.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/remoteobjects/qremoteobjectsource.cpp b/src/remoteobjects/qremoteobjectsource.cpp index 36bee20..5cbc195 100644 --- a/src/remoteobjects/qremoteobjectsource.cpp +++ b/src/remoteobjects/qremoteobjectsource.cpp @@ -137,9 +137,10 @@ QRemoteObjectSourceBase::QRemoteObjectSourceBase(QObject *obj, Private *d, const QRemoteObjectSource::QRemoteObjectSource(QObject *obj, Private *d, const SourceApiMap *api, QObject *adapter) : QRemoteObjectSourceBase(obj, d, api, adapter) - , m_name(adapter ? MODEL().arg(api->name()) : CLASS().arg(api->name())) + , m_name(api->typeName() == QLatin1String("QAbstractItemModelAdapter") ? MODEL().arg(api->name()) : CLASS().arg(api->name())) { - d->m_sourceIo->registerSource(this); + if (obj) + d->m_sourceIo->registerSource(this); } QRemoteObjectRootSource::QRemoteObjectRootSource(QObject *obj, const SourceApiMap *api, @@ -182,11 +183,21 @@ void QRemoteObjectSourceBase::setConnections() void QRemoteObjectSourceBase::resetObject(QObject *newObject) { - QObject::disconnect(m_object, 0, this, 0); - if (m_adapter) - QObject::disconnect(m_adapter, 0, this, 0); + if (m_object) + m_object->disconnect(this); + if (m_adapter) { + m_adapter->disconnect(this); + delete m_adapter; + m_adapter = nullptr; + } m_object = newObject; + auto model = qobject_cast<QAbstractItemModel *>(newObject); + if (model) { + d->m_sourceIo->registerSource(this); + m_adapter = new QAbstractItemModelSourceAdapter(model, nullptr, model->roleNames().keys().toVector()); + } + setParent(newObject); if (newObject) setConnections(); |
