@@ -680,6 +680,18 @@ QPair< bool, QList<QDomNode> > QgsProject::_getMapLayers( QDomDocument const &do
680
680
vIt->first ->updateFields ();
681
681
}
682
682
683
+ QSet<QgsVectorLayer *> notified;
684
+ for ( vIt = vLayerList.begin (); vIt != vLayerList.end (); ++vIt )
685
+ {
686
+ if ( notified.contains ( vIt->first ) )
687
+ continue ;
688
+
689
+ notified << vIt->first ;
690
+ emit readMapLayer ( vIt->first , vIt->second );
691
+ }
692
+
693
+
694
+
683
695
return qMakePair ( returnStatus, brokenNodes );
684
696
} // _getMapLayers
685
697
@@ -715,16 +727,17 @@ bool QgsProject::addLayer( const QDomElement &layerElem, QList<QDomNode> &broken
715
727
// have the layer restore state that is stored in Dom node
716
728
if ( mapLayer->readLayerXML ( layerElem ) && mapLayer->isValid () )
717
729
{
718
- emit readMapLayer ( mapLayer, layerElem );
730
+ // postpone readMapLayer signal for vector layers with joins
731
+ QgsVectorLayer *vLayer = qobject_cast<QgsVectorLayer*>( mapLayer );
732
+ if ( !vLayer || vLayer->vectorJoins ().size () == 0 )
733
+ emit readMapLayer ( mapLayer, layerElem );
734
+ else
735
+ vectorLayerList.push_back ( qMakePair ( vLayer, layerElem ) );
719
736
720
737
QList<QgsMapLayer *> myLayers;
721
738
myLayers << mapLayer;
722
739
QgsMapLayerRegistry::instance ()->addMapLayers ( myLayers );
723
- QgsVectorLayer *vLayer = qobject_cast<QgsVectorLayer*>( mapLayer );
724
- if ( vLayer && vLayer->vectorJoins ().size () > 0 )
725
- {
726
- vectorLayerList.push_back ( qMakePair ( vLayer, layerElem ) );
727
- }
740
+
728
741
return true ;
729
742
}
730
743
else
0 commit comments