void QgsSpatialQuery::populateIndexResultDisjoint( QgsFeatureIds &qsetIndexResult, QgsFeatureId idTarget, const QgsGeometry& geomTarget, bool ( QgsGeometryEngine::* op )( const QgsAbstractGeometry&, QString* ) const ) { QgsFeatureIds listIdReference = mIndexReference.intersects( geomTarget.boundingBox() ).toSet(); if ( listIdReference.isEmpty() ) { qsetIndexResult.insert( idTarget ); return; } //prepare geometry QgsGeometryEngine* geomEngine = geomTarget.createGeometryEngine( geomTarget.geometry() ); geomEngine->prepareGeometry(); QgsFeature featureReference; QgsGeometry geomReference; QgsFeatureIterator listIt = mLayerReference->getFeatures( QgsFeatureRequest().setFilterFids( listIdReference ) ); bool addIndex = true; while ( listIt.nextFeature( featureReference ) ) { geomReference = featureReference.geometry(); if (( geomEngine->*op )( *geomReference.geometry(), 0 ) ) { addIndex = false; break; } } if ( addIndex ) { qsetIndexResult.insert( idTarget ); } delete geomEngine; } // void QgsSpatialQuery::populateIndexResultDisjoint( ...