From 6b6cfa4dce4d494fd43ffdf5178f464f221bed0e Mon Sep 17 00:00:00 2001 From: Julien Cabieces Date: Thu, 11 Feb 2021 02:26:43 +0100 Subject: [PATCH] properly get layer from a QgsProcessingFeatureSourceDefinition (#41457) Fixes #40055 --- src/gui/processing/qgsprocessingwidgetwrapperimpl.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/gui/processing/qgsprocessingwidgetwrapperimpl.cpp b/src/gui/processing/qgsprocessingwidgetwrapperimpl.cpp index 9336575030c2..ceab9a133414 100644 --- a/src/gui/processing/qgsprocessingwidgetwrapperimpl.cpp +++ b/src/gui/processing/qgsprocessingwidgetwrapperimpl.cpp @@ -2005,7 +2005,15 @@ void QgsProcessingExpressionWidgetWrapper::setParentLayerWrapperValue( const Qgs context = tmpContext.get(); } - QgsVectorLayer *layer = QgsProcessingParameters::parameterAsVectorLayer( parentWrapper->parameterDefinition(), parentWrapper->parameterValue(), *context ); + QVariant val = parentWrapper->parameterValue(); + if ( val.canConvert() ) + { + // input is a QgsProcessingFeatureSourceDefinition - get extra properties from it + QgsProcessingFeatureSourceDefinition fromVar = qvariant_cast( val ); + val = fromVar.source; + } + + QgsVectorLayer *layer = QgsProcessingParameters::parameterAsVectorLayer( parentWrapper->parameterDefinition(), val, *context ); if ( !layer ) { if ( mFieldExpWidget )