forked from qt-creator/qt-creator
QmlDesigner: Fix try_emplace return value
Don't return a null pointer if the collection model was already inserted. try_emplace is always return an valid iterator. Change-Id: Icbb5ec16c1dd63630cbcb1d3fdd6a6a783a76548 Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
This commit is contained in:
@@ -29,13 +29,8 @@ void DesignSystemInterface::loadDesignSystem()
|
||||
|
||||
CollectionModel *DesignSystemInterface::model(const QString &typeName)
|
||||
{
|
||||
if (auto collection = m_store->collection(typeName)) {
|
||||
auto itr = m_models.find(typeName);
|
||||
if (itr != m_models.end())
|
||||
return itr->second.get();
|
||||
|
||||
if (auto collection = m_store->collection(typeName))
|
||||
return createModel(typeName, collection);
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
@@ -75,14 +70,14 @@ QStringList DesignSystemInterface::collections() const
|
||||
|
||||
CollectionModel *DesignSystemInterface::createModel(const QString &typeName, DSThemeManager *collection)
|
||||
{
|
||||
auto [newItr, success] = m_models.try_emplace(typeName,
|
||||
makeLazyUniquePtr<CollectionModel>(collection,
|
||||
m_store));
|
||||
if (success) {
|
||||
auto [iterator, inserted] = m_models.try_emplace(typeName,
|
||||
makeLazyUniquePtr<CollectionModel>(collection,
|
||||
m_store));
|
||||
if (inserted) {
|
||||
// Otherwise the model will be deleted by the QML engine.
|
||||
QQmlEngine::setObjectOwnership(newItr->second.get(), QQmlEngine::CppOwnership);
|
||||
return newItr->second.get();
|
||||
QQmlEngine::setObjectOwnership(iterator->second.get(), QQmlEngine::CppOwnership);
|
||||
}
|
||||
return nullptr;
|
||||
|
||||
return iterator->second.get();
|
||||
}
|
||||
} // namespace QmlDesigner
|
||||
|
Reference in New Issue
Block a user