Showing with 13 additions and 19 deletions.
  1. +1 −1 python/core/qgsexpression.sip
  2. +1 −1 src/core/qgsattributeaction.cpp
  3. +8 −9 src/core/qgsexpression.cpp
  4. +1 −6 src/core/qgsexpression.h
  5. +1 −1 src/gui/qgshtmlannotationitem.cpp
  6. +1 −1 src/gui/qgsmaptip.cpp
2 changes: 1 addition & 1 deletion python/core/qgsexpression.sip
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ class QgsExpression
Additional substitutions can be passed through the substitutionMap
parameter
*/
static QString replaceExpressionText( QString action, QgsFeature &feat,
static QString replaceExpressionText( QString action, const QgsFeature *feat,
QgsVectorLayer* layer,
const QMap<QString, QVariant> *substitutionMap = 0 );
//
Expand Down
2 changes: 1 addition & 1 deletion src/core/qgsattributeaction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ void QgsAttributeAction::doAction( int index, QgsFeature &feat,
return;

// search for expressions while expanding actions
QString expandedAction = QgsExpression::replaceExpressionText( action.action(), feat, mLayer , substitutionMap );
QString expandedAction = QgsExpression::replaceExpressionText( action.action(), &feat, mLayer , substitutionMap );
if ( expandedAction.isEmpty() )
return;

Expand Down
17 changes: 8 additions & 9 deletions src/core/qgsexpression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
#include <QDate>
#include <QRegExp>
#include <QColor>
#include <QUuid>

#include <math.h>
#include <limits>
Expand Down Expand Up @@ -696,6 +697,11 @@ static QVariant fcnRegexpSubstr( const QVariantList& values, const QgsFeature* ,
}
}

static QVariant fcnUuid( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
{
return QUuid::createUuid().toString();
}

static QVariant fcnSubstr( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
{
QString str = getStringValue( values.at( 0 ), parent );
Expand Down Expand Up @@ -1532,6 +1538,7 @@ const QList<QgsExpression::Function*> &QgsExpression::Functions()
<< new StaticFunction( "$rownum", 0, fcnRowNumber, "Record" )
<< new StaticFunction( "$id", 0, fcnFeatureId, "Record" )
<< new StaticFunction( "$scale", 0, fcnScale, "Record" )
<< new StaticFunction( "$uuid", 0, fcnUuid, "Record" )
<< new StaticFunction( "_specialcol_", 1, fcnSpecialColumn, "Special" )
;
}
Expand Down Expand Up @@ -1721,7 +1728,7 @@ void QgsExpression::acceptVisitor( QgsExpression::Visitor& v ) const
mRootNode->accept( v );
}

QString QgsExpression::replaceExpressionText( QString action, QgsFeature* feat,
QString QgsExpression::replaceExpressionText( QString action, const QgsFeature* feat,
QgsVectorLayer* layer,
const QMap<QString, QVariant> *substitutionMap )
{
Expand Down Expand Up @@ -1796,14 +1803,6 @@ QString QgsExpression::replaceExpressionText( QString action, QgsFeature* feat,
}


QString QgsExpression::replaceExpressionText( QString action, QgsFeature& feat,
QgsVectorLayer* layer,
const QMap<QString, QVariant> *substitutionMap )
{
return replaceExpressionText( action, &feat, layer, substitutionMap );
}


///////////////////////////////////////////////
// nodes

Expand Down
7 changes: 1 addition & 6 deletions src/core/qgsexpression.h
Original file line number Diff line number Diff line change
Expand Up @@ -171,12 +171,7 @@ class CORE_EXPORT QgsExpression
Additional substitutions can be passed through the substitutionMap
parameter
*/
static QString replaceExpressionText( QString action, QgsFeature* feat,
QgsVectorLayer* layer,
const QMap<QString, QVariant> *substitutionMap = 0 );


static QString replaceExpressionText( QString action, QgsFeature& feat,
static QString replaceExpressionText( const QString action, const QgsFeature* feat,
QgsVectorLayer* layer,
const QMap<QString, QVariant> *substitutionMap = 0 );
enum UnaryOperator
Expand Down
2 changes: 1 addition & 1 deletion src/gui/qgshtmlannotationitem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ void QgsHtmlAnnotationItem::setFeatureForMapPosition()
mFeatureId = currentFeatureId;
mFeature = currentFeature;

QString newtext = QgsExpression::replaceExpressionText( mHtmlSource, mFeature, vectorLayer() );
QString newtext = QgsExpression::replaceExpressionText( mHtmlSource, &mFeature, vectorLayer() );
mWebView->setHtml( newtext );
}

Expand Down
2 changes: 1 addition & 1 deletion src/gui/qgsmaptip.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ QString QgsMapTip::fetchFeature( QgsMapLayer *layer, QgsPoint &mapPosition, QgsM

int idx = vlayer->fieldNameIndex( vlayer->displayField() );
if ( idx < 0 )
return QgsExpression::replaceExpressionText( vlayer->displayField(), feature, vlayer );
return QgsExpression::replaceExpressionText( vlayer->displayField(), &feature, vlayer );
else
return feature.attribute( idx ).toString();
}