diff --git a/src/app/qgsattributetabledialog.cpp b/src/app/qgsattributetabledialog.cpp index c2bca62e693..df51db20bf8 100644 --- a/src/app/qgsattributetabledialog.cpp +++ b/src/app/qgsattributetabledialog.cpp @@ -217,16 +217,18 @@ QgsAttributeTableDialog::QgsAttributeTableDialog( QgsVectorLayer *layer, QgsAttr { request.setFilterExpression( filterExpression ); } - if ( !needsGeom ) - request.setFlags( Qgis::FeatureRequestFlag::NoGeometry ); + if ( !needsGeom && ( !mLayer || !QgsExpression( mLayer->attributeTableConfig().sortExpression() ).needsGeometry() ) ) + { + request.setFlags( Qgis::FeatureRequestFlag::NoGeometry ); + } // Initialize dual view if ( mLayer ) { request.setSubsetOfAttributes( mMainView->requiredAttributes( mLayer ) ); mMainView->init( mLayer, QgisApp::instance()->mapCanvas(), request, editorContext, false ); - QgsAttributeTableConfig config = mLayer->attributeTableConfig(); + const QgsAttributeTableConfig config = mLayer->attributeTableConfig(); mMainView->setAttributeTableConfig( config ); mFeatureFilterWidget->init( mLayer, editorContext, mMainView, QgisApp::instance()->messageBar(), QgsMessageBar::defaultMessageTimeout() ); } diff --git a/src/gui/attributetable/qgsattributetablemodel.cpp b/src/gui/attributetable/qgsattributetablemodel.cpp index a22024db18d..a7500cf0712 100644 --- a/src/gui/attributetable/qgsattributetablemodel.cpp +++ b/src/gui/attributetable/qgsattributetablemodel.cpp @@ -1053,12 +1053,9 @@ void QgsAttributeTableModel::prefetchSortData( const QString &expressionString, widgetData = getWidgetData( cache.sortFieldIndex ); } - QgsFeatureRequest request = QgsFeatureRequest( mFeatureRequest ) - .setSubsetOfAttributes( cache.sortCacheAttributes ); - - // If expression does not need geometry set NoGeometry flag - if ( !cache.sortCacheExpression.needsGeometry() ) - request.setFlags( request.flags() | Qgis::FeatureRequestFlag::NoGeometry ); + const QgsFeatureRequest request = QgsFeatureRequest( mFeatureRequest ) + .setFlags( cache.sortCacheExpression.needsGeometry() ? Qgis::FeatureRequestFlag::NoFlags : Qgis::FeatureRequestFlag::NoGeometry ) + .setSubsetOfAttributes( cache.sortCacheAttributes ); QgsFeatureIterator it = mLayerCache->getFeatures( request );