26
26
#include " qgsgeometry.h"
27
27
#include " qgssettings.h"
28
28
#include " qgsgui.h"
29
+ #include " qgsguiutils.h"
29
30
30
31
#include < QMessageBox>
31
32
@@ -197,7 +198,7 @@ void QgsFieldCalculator::accept()
197
198
if ( !mVectorLayer ->isEditable () )
198
199
mVectorLayer ->startEditing ();
199
200
200
- QApplication::setOverrideCursor ( Qt::WaitCursor );
201
+ QgsTemporaryCursorOverride cursorOverride ( Qt::WaitCursor );
201
202
202
203
mVectorLayer ->beginEditCommand ( QStringLiteral ( " Field calculator" ) );
203
204
@@ -226,7 +227,7 @@ void QgsFieldCalculator::accept()
226
227
227
228
if ( !mVectorLayer ->addAttribute ( newField ) )
228
229
{
229
- QApplication::restoreOverrideCursor ();
230
+ cursorOverride. release ();
230
231
QMessageBox::critical ( nullptr , tr ( " Create New Field" ), tr ( " Could not add the new field to the provider." ) );
231
232
mVectorLayer ->destroyEditCommand ();
232
233
return ;
@@ -248,7 +249,7 @@ void QgsFieldCalculator::accept()
248
249
expContext.setFields ( mVectorLayer ->fields () );
249
250
if ( ! exp.prepare ( &expContext ) )
250
251
{
251
- QApplication::restoreOverrideCursor ();
252
+ cursorOverride. release ();
252
253
QMessageBox::critical ( nullptr , tr ( " Evaluation Error" ), exp.evalErrorString () );
253
254
return ;
254
255
}
@@ -257,7 +258,6 @@ void QgsFieldCalculator::accept()
257
258
if ( mAttributeId == -1 && !updatingGeom )
258
259
{
259
260
mVectorLayer ->destroyEditCommand ();
260
- QApplication::restoreOverrideCursor ();
261
261
return ;
262
262
}
263
263
@@ -317,10 +317,9 @@ void QgsFieldCalculator::accept()
317
317
318
318
QgisApp::instance ()->blockAttributeTableUpdates ( mVectorLayer , false );
319
319
320
- QApplication::restoreOverrideCursor ();
321
-
322
320
if ( !calculationSuccess )
323
321
{
322
+ cursorOverride.release ();
324
323
QMessageBox::critical ( nullptr , tr ( " Evaluation Error" ), tr ( " An error occurred while evaluating the calculation string:\n %1" ).arg ( error ) );
325
324
mVectorLayer ->destroyEditCommand ();
326
325
return ;
0 commit comments