summaryrefslogtreecommitdiffstats
path: root/src/remoteobjects/qremoteobjectsource.cpp
diff options
context:
space:
mode:
authorBogDan Vatra <bogdan@kdab.com>2018-06-23 18:27:48 -0400
committerJani Heikkinen <jani.heikkinen@qt.io>2018-11-27 04:11:23 +0000
commite4631d1a6aa20dfdd32fff2e3764223435fe427f (patch)
treedc7569aae55ee4ab280174b9734b78bc37ce245c /src/remoteobjects/qremoteobjectsource.cpp
parent41ed53bf6603858856124f9e8593b804f4e6d1c8 (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.cpp21
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();