diff options
| author | Michael Brasser <mbrasser@ford.com> | 2019-12-17 10:52:08 -0600 |
|---|---|---|
| committer | Michael Brasser <mbrasser@ford.com> | 2020-07-28 08:10:58 -0500 |
| commit | 86dc5afb569663a129411fdb9a1304f5906019b9 (patch) | |
| tree | 0cde5e2e2c9070971f26d8ca687593e7ce12e443 /src/remoteobjects/qremoteobjectsource.cpp | |
| parent | 51695d93e7190d0cbb2e896a0a2bbdd24ebbaf71 (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.cpp | 11 |
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); |
