@@ -297,17 +297,8 @@ void QgsAtlasComposition::prepareForFeature( int featureI )
297
297
QgsExpression::setSpecialColumn ( " $atlasfeatureid" , mCurrentFeature .id () );
298
298
QgsExpression::setSpecialColumn ( " $atlasgeometry" , QVariant::fromValue ( *mCurrentFeature .geometry () ) );
299
299
300
- if ( !mSingleFile && mFilenamePattern .size () > 0 )
301
- {
302
- QgsExpression::setSpecialColumn ( " $feature" , QVariant (( int )featureI + 1 ) );
303
- QVariant filenameRes = mFilenameExpr ->evaluate ( &mCurrentFeature , mCoverageLayer ->pendingFields () );
304
- if ( mFilenameExpr ->hasEvalError () )
305
- {
306
- throw std::runtime_error ( tr ( " Filename eval error: %1" ).arg ( mFilenameExpr ->evalErrorString () ).toLocal8Bit ().data () );
307
- }
308
-
309
- mCurrentFilename = filenameRes.toString ();
310
- }
300
+ // generate filename for current feature
301
+ evalFeatureFilename ();
311
302
312
303
//
313
304
// compute the new extent
@@ -548,6 +539,28 @@ void QgsAtlasComposition::updateFilenameExpression()
548
539
// prepare the filename expression
549
540
mFilenameExpr ->prepare ( fields );
550
541
}
542
+
543
+ // if atlas preview is currently enabled, regenerate filename for current feature
544
+ if ( mComposition ->atlasPreviewEnabled () )
545
+ {
546
+ evalFeatureFilename ();
547
+ }
548
+
549
+ }
550
+
551
+ void QgsAtlasComposition::evalFeatureFilename ()
552
+ {
553
+ // generate filename for current atlas feature
554
+ if ( !mSingleFile && mFilenamePattern .size () > 0 )
555
+ {
556
+ QVariant filenameRes = mFilenameExpr ->evaluate ( &mCurrentFeature , mCoverageLayer ->pendingFields () );
557
+ if ( mFilenameExpr ->hasEvalError () )
558
+ {
559
+ throw std::runtime_error ( tr ( " Filename eval error: %1" ).arg ( mFilenameExpr ->evalErrorString () ).toLocal8Bit ().data () );
560
+ }
561
+
562
+ mCurrentFilename = filenameRes.toString ();
563
+ }
551
564
}
552
565
553
566
0 commit comments