@@ -4323,11 +4323,23 @@ bool QgisApp::toggleEditing( QgsMapLayer *layer, bool allowCancel )
4323
4323
4324
4324
if ( !vlayer->isEditable () && !vlayer->isReadOnly () )
4325
4325
{
4326
- vlayer->startEditing ();
4327
- if ( !( vlayer->dataProvider ()->capabilities () & QgsVectorDataProvider::EditingCapabilities ) )
4326
+ if ( vlayer->dataProvider ()->capabilities () & QgsVectorDataProvider::EditingCapabilities == 0 )
4328
4327
{
4329
4328
QMessageBox::information ( 0 , tr ( " Start editing failed" ), tr ( " Provider cannot be opened for editing" ) );
4330
- res = false ;
4329
+ return false ;
4330
+ }
4331
+
4332
+ vlayer->startEditing ();
4333
+
4334
+ QSettings settings;
4335
+ QString markerType = settings.value ( " /qgis/digitizing/marker_style" , " Cross" ).toString ();
4336
+ bool markSelectedOnly = settings.value ( " /qgis/digitizing/marker_only_for_selected" , false ).toBool ();
4337
+
4338
+ // redraw only if markers will be drawn
4339
+ if ( ( !markSelectedOnly || vlayer->selectedFeatureCount () > 0 ) &&
4340
+ ( markerType == " Cross" || markerType == " SemiTransparentCircle" ) )
4341
+ {
4342
+ vlayer->triggerRepaint ();
4331
4343
}
4332
4344
}
4333
4345
else if ( vlayer->isModified () )
@@ -4358,6 +4370,8 @@ bool QgisApp::toggleEditing( QgsMapLayer *layer, bool allowCancel )
4358
4370
// and try the commit again later
4359
4371
res = false ;
4360
4372
}
4373
+
4374
+ vlayer->triggerRepaint ();
4361
4375
break ;
4362
4376
4363
4377
case QMessageBox::Discard:
@@ -4366,6 +4380,8 @@ bool QgisApp::toggleEditing( QgsMapLayer *layer, bool allowCancel )
4366
4380
QMessageBox::information ( 0 , tr ( " Error" ), tr ( " Problems during roll back" ) );
4367
4381
res = false ;
4368
4382
}
4383
+
4384
+ vlayer->triggerRepaint ();
4369
4385
break ;
4370
4386
4371
4387
default :
@@ -4376,24 +4392,14 @@ bool QgisApp::toggleEditing( QgsMapLayer *layer, bool allowCancel )
4376
4392
{
4377
4393
vlayer->rollBack ();
4378
4394
res = true ;
4395
+ vlayer->triggerRepaint ();
4379
4396
}
4380
4397
4381
4398
if ( layer == activeLayer () )
4382
4399
{
4383
4400
activateDeactivateLayerRelatedActions ( layer );
4384
4401
}
4385
4402
4386
- QSettings settings;
4387
- QString markerType = settings.value ( " /qgis/digitizing/marker_style" , " Cross" ).toString ();
4388
- bool markSelectedOnly = settings.value ( " /qgis/digitizing/marker_only_for_selected" , false ).toBool ();
4389
-
4390
- // repaint only if the there will be/were markers
4391
- if (( !markSelectedOnly || vlayer->selectedFeatureCount () > 0 ) &&
4392
- ( markerType == " Cross" || markerType == " SemiTransparentCircle" ) )
4393
- {
4394
- vlayer->triggerRepaint ();
4395
- }
4396
-
4397
4403
return res;
4398
4404
}
4399
4405
0 commit comments