diff --git a/python/gui/qgsfieldmodel.sip b/python/gui/qgsfieldmodel.sip
index 6c09f66bd39..3d8a721af44 100644
--- a/python/gui/qgsfieldmodel.sip
+++ b/python/gui/qgsfieldmodel.sip
@@ -36,9 +36,8 @@ class QgsFieldModel : QAbstractItemModel
 
     /**
      * @brief setExpression sets a single expression to be added after the fields at the end of the model
-     * @return the model index of the newly added expression
      */
-    QModelIndex setExpression( const QString &expression );
+    void setExpression( const QString &expression );
 
     //! remove expressions from the model
     void removeExpression();
diff --git a/src/gui/qgsfieldexpressionwidget.cpp b/src/gui/qgsfieldexpressionwidget.cpp
index 6587ba96b30..4c5f8ca5d95 100644
--- a/src/gui/qgsfieldexpressionwidget.cpp
+++ b/src/gui/qgsfieldexpressionwidget.cpp
@@ -152,7 +152,8 @@ void QgsFieldExpressionWidget::setField( const QString &fieldName )
     if ( !idx.isValid() )
     {
       // new expression
-      idx = mFieldProxyModel->sourceFieldModel()->setExpression( fieldName );
+      mFieldProxyModel->sourceFieldModel()->setExpression( fieldName );
+      idx = mFieldProxyModel->sourceFieldModel()->indexFromName( fieldName );
     }
   }
   QModelIndex proxyIndex = mFieldProxyModel->mapFromSource( idx );
@@ -189,7 +190,8 @@ void QgsFieldExpressionWidget::expressionEditingFinished()
 {
   QgsDebugMsg( "Editing finsihed" );
   const QString expression = mCombo->lineEdit()->text();
-  QModelIndex idx = mFieldProxyModel->sourceFieldModel()->setExpression( expression );
+  mFieldProxyModel->sourceFieldModel()->setExpression( expression );
+  QModelIndex idx = mFieldProxyModel->sourceFieldModel()->indexFromName( expression );
   QModelIndex proxyIndex = mFieldProxyModel->mapFromSource( idx );
   mCombo->setCurrentIndex( proxyIndex.row() );
   currentFieldChanged();
diff --git a/src/gui/qgsfieldmodel.cpp b/src/gui/qgsfieldmodel.cpp
index 4f702e2d4e5..2c33ba7d962 100644
--- a/src/gui/qgsfieldmodel.cpp
+++ b/src/gui/qgsfieldmodel.cpp
@@ -110,20 +110,18 @@ void QgsFieldModel::setAllowExpression( bool allowExpression )
   }
 }
 
-QModelIndex QgsFieldModel::setExpression( const QString &expression )
+void QgsFieldModel::setExpression( const QString &expression )
 {
   if ( !mAllowExpression )
-    return QModelIndex();
+    return;
 
   QModelIndex idx = indexFromName( expression );
   if ( idx.isValid() )
-    return idx;
+    return;
 
   beginResetModel();
   mExpression = QList<QString>() << expression;
   endResetModel();
-
-  return index( mFields.count() , 0 );
 }
 
 void QgsFieldModel::removeExpression()
diff --git a/src/gui/qgsfieldmodel.h b/src/gui/qgsfieldmodel.h
index cc26f189a9c..2e5aa9dccbb 100644
--- a/src/gui/qgsfieldmodel.h
+++ b/src/gui/qgsfieldmodel.h
@@ -58,9 +58,8 @@ class GUI_EXPORT QgsFieldModel : public QAbstractItemModel
 
     /**
      * @brief setExpression sets a single expression to be added after the fields at the end of the model
-     * @return the model index of the newly added expression
      */
-    QModelIndex setExpression( const QString &expression );
+    void setExpression( const QString &expression );
 
     //! remove expressions from the model
     void removeExpression();