summaryrefslogtreecommitdiffstats
path: root/src/remoteobjects/qremoteobjectsource.cpp
diff options
context:
space:
mode:
authorMichael Brasser <mbrasser@ford.com>2019-12-17 10:52:08 -0600
committerMichael Brasser <mbrasser@ford.com>2020-07-28 08:10:58 -0500
commit86dc5afb569663a129411fdb9a1304f5906019b9 (patch)
tree0cde5e2e2c9070971f26d8ca687593e7ce12e443 /src/remoteobjects/qremoteobjectsource.cpp
parent51695d93e7190d0cbb2e896a0a2bbdd24ebbaf71 (diff)
Fix crash with same-named subobjects or models
Differentiate between subobjects or models coming from different primary objects. Change-Id: Ic4360ae208edbe31a1130f60248a501d63e55773 Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
Diffstat (limited to 'src/remoteobjects/qremoteobjectsource.cpp')
-rw-r--r--src/remoteobjects/qremoteobjectsource.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/remoteobjects/qremoteobjectsource.cpp b/src/remoteobjects/qremoteobjectsource.cpp
index 46c504b..6cf059e 100644
--- a/src/remoteobjects/qremoteobjectsource.cpp
+++ b/src/remoteobjects/qremoteobjectsource.cpp
@@ -117,7 +117,7 @@ QRemoteObjectSourceBase::QRemoteObjectSourceBase(QObject *obj, Private *d, const
QAbstractItemAdapterSourceAPI<QAbstractItemModel, QAbstractItemModelSourceAdapter> *modelApi =
new QAbstractItemAdapterSourceAPI<QAbstractItemModel, QAbstractItemModelSourceAdapter>(modelInfo.name);
if (!model)
- m_children.insert(i, new QRemoteObjectSource(nullptr, d, modelApi, nullptr));
+ m_children.insert(i, new QRemoteObjectSource(nullptr, d, modelApi, nullptr, api->name()));
else {
roles.clear();
const auto knownRoles = model->roleNames();
@@ -133,20 +133,21 @@ QRemoteObjectSourceBase::QRemoteObjectSourceBase(QObject *obj, Private *d, const
}
auto adapter = new QAbstractItemModelSourceAdapter(model, nullptr,
roles.isEmpty() ? knownRoles.keys().toVector() : roles);
- m_children.insert(i, new QRemoteObjectSource(model, d, modelApi, adapter));
+ m_children.insert(i, new QRemoteObjectSource(model, d, modelApi, adapter, api->name()));
}
} else {
const auto classApi = api->m_subclasses.at(subclassIndex++);
- m_children.insert(i, new QRemoteObjectSource(child, d, classApi, nullptr));
+ m_children.insert(i, new QRemoteObjectSource(child, d, classApi, nullptr, api->name()));
}
}
}
}
}
-QRemoteObjectSource::QRemoteObjectSource(QObject *obj, Private *d, const SourceApiMap *api, QObject *adapter)
+QRemoteObjectSource::QRemoteObjectSource(QObject *obj, Private *d, const SourceApiMap *api, QObject *adapter, const QString &parentName)
: QRemoteObjectSourceBase(obj, d, api, adapter)
- , m_name(api->typeName() == QLatin1String("QAbstractItemModelAdapter") ? MODEL().arg(api->name()) : CLASS().arg(api->name()))
+ , m_name(api->typeName() == QLatin1String("QAbstractItemModelAdapter") ? MODEL().arg(parentName + QLatin1String("::") + api->name()) :
+ CLASS().arg(parentName + QLatin1String("::") + api->name()))
{
if (obj)
d->m_sourceIo->registerSource(this);