@@ -58,6 +58,8 @@ QgsFieldExpressionWidget::QgsFieldExpressionWidget( QWidget *parent )
58
58
connect ( mCombo ->lineEdit (), SIGNAL ( editingFinished () ), this , SLOT ( expressionEditingFinished () ) );
59
59
connect ( mCombo , SIGNAL ( activated ( int ) ), this , SLOT ( currentFieldChanged () ) );
60
60
connect ( mButton , SIGNAL ( clicked () ), this , SLOT ( editExpression () ) );
61
+ connect ( mFieldProxyModel , SIGNAL ( modelAboutToBeReset () ), this , SLOT ( beforeResetModel () ) );
62
+ connect ( mFieldProxyModel , SIGNAL ( modelReset () ), this , SLOT ( afterResetModel () ) );
61
63
// NW TODO - Fix in 2.6
62
64
// connect( mCombo->lineEdit(), SIGNAL( returnPressed() ), this, SIGNAL( returnPressed() ) );
63
65
@@ -158,7 +160,7 @@ void QgsFieldExpressionWidget::setLayer( QgsVectorLayer *layer )
158
160
159
161
mFieldProxyModel ->sourceFieldModel ()->setLayer ( layer );
160
162
161
- connect ( mFieldProxyModel ->sourceFieldModel ()->layer (), SIGNAL ( updatedFields () ), this , SLOT ( reloadLayer () ) );
163
+ connect ( mFieldProxyModel ->sourceFieldModel ()->layer (), SIGNAL ( updatedFields () ), SLOT ( reloadLayer () ), Qt::UniqueConnection );
162
164
}
163
165
164
166
void QgsFieldExpressionWidget::setField ( const QString &fieldName )
@@ -240,6 +242,18 @@ void QgsFieldExpressionWidget::reloadLayer()
240
242
setLayer ( mFieldProxyModel ->sourceFieldModel ()->layer () );
241
243
}
242
244
245
+ void QgsFieldExpressionWidget::beforeResetModel ()
246
+ {
247
+ // Backup expression
248
+ mBackupExpression = mCombo ->currentText ();
249
+ }
250
+
251
+ void QgsFieldExpressionWidget::afterResetModel ()
252
+ {
253
+ // Restore expression
254
+ mCombo ->lineEdit ()->setText ( mBackupExpression );
255
+ }
256
+
243
257
void QgsFieldExpressionWidget::currentFieldChanged ()
244
258
{
245
259
updateLineEditStyle ();
0 commit comments