Skip to content

Commit a13ef7b

Browse files
committedJan 12, 2017
Use feature from expression context in expression builder preview
instead of always getting first feature from the layer This means that e.g. expression builder previews in composer atlas will use the current atlas preview feature Also remove an unnecessary restriction that blocks the preview if a layer has no features
1 parent 55f6b11 commit a13ef7b

File tree

2 files changed

+9
-24
lines changed

2 files changed

+9
-24
lines changed
 

‎src/gui/qgsexpressionbuilderwidget.cpp

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -543,33 +543,19 @@ void QgsExpressionBuilderWidget::on_txtExpressionString_textChanged()
543543
// Only set calculator if we have layer, else use default.
544544
exp.setGeomCalculator( &mDa );
545545

546-
if ( !mFeature.isValid() )
546+
if ( !mExpressionContext.feature().isValid() )
547547
{
548-
mLayer->getFeatures().nextFeature( mFeature );
549-
}
550-
551-
if ( mFeature.isValid() )
552-
{
553-
mExpressionContext.setFeature( mFeature );
554-
QVariant value = exp.evaluate( &mExpressionContext );
555-
if ( !exp.hasEvalError() )
556-
lblPreview->setText( QgsExpression::formatPreviewString( value ) );
557-
}
558-
else
559-
{
560-
// The feature is invalid because we don't have one but that doesn't mean user can't
561-
// build a expression string. They just get no preview.
562-
lblPreview->setText( QLatin1String( "" ) );
548+
// no feature passed yet, try to get from layer
549+
QgsFeature f;
550+
mLayer->getFeatures().nextFeature( f );
551+
mExpressionContext.setFeature( f );
563552
}
564553
}
565-
else
554+
555+
QVariant value = exp.evaluate( &mExpressionContext );
556+
if ( !exp.hasEvalError() )
566557
{
567-
// No layer defined
568-
QVariant value = exp.evaluate( &mExpressionContext );
569-
if ( !exp.hasEvalError() )
570-
{
571-
lblPreview->setText( QgsExpression::formatPreviewString( value ) );
572-
}
558+
lblPreview->setText( QgsExpression::formatPreviewString( value ) );
573559
}
574560

575561
if ( exp.hasParserError() || exp.hasEvalError() )

‎src/gui/qgsexpressionbuilderwidget.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,6 @@ class GUI_EXPORT QgsExpressionBuilderWidget : public QWidget, private Ui::QgsExp
307307
QSortFilterProxyModel *mProxyValues;
308308
QgsExpressionItemSearchProxy *mProxyModel;
309309
QMap<QString, QgsExpressionItem*> mExpressionGroups;
310-
QgsFeature mFeature;
311310
QgsExpressionHighlighter* highlighter;
312311
bool mExpressionValid;
313312
QgsDistanceArea mDa;

1 commit comments

Comments
 (1)

NathanW2 commented on Jan 12, 2017

@NathanW2
Member

Nice fix.

Please sign in to comment.