Skip to content
Permalink
Browse files

Merge pull request #39141 from elpaso/bugfix-gh39025-fix-layer-depend…

…ency-loading

Fix broken layer dependencies for old projects
  • Loading branch information
elpaso committed Oct 3, 2020
2 parents 5ed37da + 377e5e2 commit beaf4307ecbe332b6df1872d9656be107ebd010f
Showing with 13 additions and 1 deletion.
  1. +6 −1 src/app/qgisapp.cpp
  2. +7 −0 src/core/fieldformatter/qgsrelationreferencefieldformatter.cpp
@@ -2251,7 +2251,7 @@ const QList<QgsVectorLayerRef> QgisApp::findBrokenLayerDependencies( QgsVectorLa

if ( found )
{
// Make sure we don't add it twice
// Make sure we don't add it twice if it was already added by the form widgets check
bool refFound = false;
for ( const QgsVectorLayerRef &otherRef : qgis::as_const( brokenDependencies ) )
{
@@ -2279,6 +2279,11 @@ void QgisApp::resolveVectorLayerDependencies( QgsVectorLayer *vl, QgsMapLayer::S
const auto constDependencies { findBrokenLayerDependencies( vl, categories ) };
for ( const QgsVectorLayerRef &dependency : constDependencies )
{
// Temporary check for projects that were created before commit 7e8c7b3d0e094737336ff4834ea2af625d2921bf
if ( QgsProject::instance()->mapLayer( dependency.layerId ) )
{
continue;
}
// try to aggressively resolve the broken dependencies
bool loaded = false;
const QString providerName { vl->dataProvider()->name() };
@@ -176,6 +176,13 @@ QVariant QgsRelationReferenceFieldFormatter::createCache( QgsVectorLayer *layer,

QList<QgsVectorLayerRef> QgsRelationReferenceFieldFormatter::layerDependencies( const QVariantMap &config ) const
{
// Old projects, create before the weak relations were introduced and stored with the
// widget configuration do not have the referenced layer details but only the "Relation" id,
// for these projects automatic loading of broken references is not supported.
if ( config.value( QStringLiteral( "ReferencedLayerId" ) ).toString().isEmpty() )
{
return {};
}

const QList<QgsVectorLayerRef> result {{
QgsVectorLayerRef(

0 comments on commit beaf430

Please sign in to comment.
You can’t perform that action at this time.