Showing with 17 additions and 8 deletions.
  1. +1 −1 i18n/qgis_fr.ts
  2. +15 −6 src/core/qgscachedfeatureiterator.cpp
  3. +1 −1 src/core/qgscachedfeatureiterator.h
2 changes: 1 addition & 1 deletion i18n/qgis_fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3432,7 +3432,7 @@ Are you sure you want to proceed?</source>
<message>
<location filename="../python/plugins/processing/ui/DlgNumberInput.ui" line="45"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Warning&lt;/span&gt;: if expression result is float value, but integer required, result will be rounded to integer.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Attention&lt;/span&gt;&nbsp;: si le résultat de l'expression est à virgule flottante, mais qu'un entier est requis, le résultat sera arrondi en entier.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
<translation type="unfinished">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Attention&lt;/span&gt;&amp;nbsp;: si le résultat de l'expression est à virgule flottante, mais qu'un entier est requis, le résultat sera arrondi en entier.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
</context>
<context>
Expand Down
21 changes: 15 additions & 6 deletions src/core/qgscachedfeatureiterator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,10 @@ QgsCachedFeatureIterator::QgsCachedFeatureIterator( QgsVectorLayerCache *vlCache
, mFeatureIds( featureIds )
, mVectorLayerCache( vlCache )
{
mFeatureIdIterator = featureIds.begin();
mFeatureIdIterator = featureIds.constBegin();

if ( mFeatureIdIterator == featureIds.constEnd() )
close();
}

QgsCachedFeatureIterator::QgsCachedFeatureIterator( QgsVectorLayerCache *vlCache, QgsFeatureRequest featureRequest )
Expand All @@ -43,31 +46,37 @@ QgsCachedFeatureIterator::QgsCachedFeatureIterator( QgsVectorLayerCache *vlCache
break;
}

mFeatureIdIterator = mFeatureIds.begin();
mFeatureIdIterator = mFeatureIds.constBegin();

if ( mFeatureIdIterator == featureIds.constEnd() )
close();
}

bool QgsCachedFeatureIterator::fetchFeature( QgsFeature& f )
{
mFeatureIdIterator++;
if ( mClosed )
return false;

while ( mFeatureIdIterator != mFeatureIds.end() )
while ( mFeatureIdIterator++ != mFeatureIds.constEnd() )
{
f = QgsFeature( *mVectorLayerCache->mCache[*mFeatureIdIterator]->feature() );
if ( mRequest.acceptFeature( f ) )
return true;
}
close();
return false;
}

bool QgsCachedFeatureIterator::rewind()
{
mFeatureIdIterator = mFeatureIds.begin();
mFeatureIdIterator = mFeatureIds.constBegin();
return true;
}

bool QgsCachedFeatureIterator::close()
{
// Nothing to clean...
mClosed = true;
mFeatureIds.clear();
return true;
}

Expand Down
2 changes: 1 addition & 1 deletion src/core/qgscachedfeatureiterator.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ class CORE_EXPORT QgsCachedFeatureIterator : public QgsAbstractFeatureIterator
private:
QgsFeatureIds mFeatureIds;
QgsVectorLayerCache* mVectorLayerCache;
QgsFeatureIds::Iterator mFeatureIdIterator;
QgsFeatureIds::ConstIterator mFeatureIdIterator;
};

/**
Expand Down