From 0f2a8341f372b921ab55f14c1ae9ce2dab2ea617 Mon Sep 17 00:00:00 2001 From: Denis Rouzaud Date: Fri, 18 Sep 2020 15:59:25 +0200 Subject: [PATCH] [locator] fix display title expression not displayed anymore in the results --- src/app/locator/qgsinbuiltlocatorfilters.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/app/locator/qgsinbuiltlocatorfilters.cpp b/src/app/locator/qgsinbuiltlocatorfilters.cpp index 7d307be2e8b..8bbf84b54b0 100644 --- a/src/app/locator/qgsinbuiltlocatorfilters.cpp +++ b/src/app/locator/qgsinbuiltlocatorfilters.cpp @@ -282,7 +282,7 @@ QStringList QgsActiveLayerFeaturesLocatorFilter::prepare( const QString &string, QStringList expressionParts; QStringList completionList; const QgsFields fields = layer->fields(); - QgsAttributeList subsetOfAttributes; + QgsAttributeList subsetOfAttributes = qgis::setToList( mDispExpression.referencedAttributeIndexes( layer->fields() ) ); for ( const QgsField &field : fields ) { if ( field.configurationFlags().testFlag( QgsField::ConfigurationFlag::NotSearchable ) ) @@ -292,7 +292,11 @@ QStringList QgsActiveLayerFeaturesLocatorFilter::prepare( const QString &string, continue; if ( !_fieldRestriction.isEmpty() ) - subsetOfAttributes << layer->fields().indexFromName( field.name() ); + { + int index = layer->fields().indexFromName( field.name() ); + if ( !subsetOfAttributes.contains( index ) ) + subsetOfAttributes << index; + } completionList.append( QStringLiteral( "@%1 " ).arg( field.name() ) ); if ( field.type() == QVariant::String ) @@ -309,7 +313,8 @@ QStringList QgsActiveLayerFeaturesLocatorFilter::prepare( const QString &string, QString expression = QStringLiteral( "(%1)" ).arg( expressionParts.join( QStringLiteral( " ) OR ( " ) ) ); QgsFeatureRequest req; - req.setFlags( QgsFeatureRequest::NoGeometry ); + if ( !mDispExpression.needsGeometry() ) + req.setFlags( QgsFeatureRequest::NoGeometry ); req.setFilterExpression( expression ); if ( !_fieldRestriction.isEmpty() ) req.setSubsetOfAttributes( subsetOfAttributes );