@@ -10879,8 +10879,42 @@ bool QgisApp::toggleEditing( QgsMapLayer *layer, bool allowCancel )
10879
10879
bool isModified = false;
10880
10880
10881
10881
// Assume changes if: a) the layer reports modifications or b) its transaction group was modified
10882
- if ( vlayer->isModified() || ( tg && tg->layers().contains( vlayer ) && tg->modified() ) )
10882
+ QString modifiedLayerNames;
10883
+ bool hasSeveralModifiedLayers = false;
10884
+ if ( tg && tg->layers().contains( vlayer ) && tg->modified() )
10885
+ {
10886
+ isModified = true;
10887
+ std::vector<QString> vectModifiedLayerNames;
10888
+ if ( vlayer->isModified() )
10889
+ {
10890
+ vectModifiedLayerNames.push_back( vlayer->name() );
10891
+ }
10892
+ for ( QgsVectorLayer *iterLayer : tg->layers() )
10893
+ {
10894
+ if ( iterLayer != vlayer && iterLayer->isModified() )
10895
+ {
10896
+ vectModifiedLayerNames.push_back( iterLayer->name() );
10897
+ }
10898
+ }
10899
+ if ( vectModifiedLayerNames.size() == 1 )
10900
+ {
10901
+ modifiedLayerNames = vectModifiedLayerNames[0];
10902
+ }
10903
+ else if ( vectModifiedLayerNames.size() == 2 )
10904
+ {
10905
+ modifiedLayerNames = tr( "%1 and %2" ).arg( vectModifiedLayerNames[0] ).arg( vectModifiedLayerNames[1] );
10906
+ }
10907
+ else if ( vectModifiedLayerNames.size() > 2 )
10908
+ {
10909
+ modifiedLayerNames = tr( "%1, %2, …" ).arg( vectModifiedLayerNames[0] ).arg( vectModifiedLayerNames[1] );
10910
+ }
10911
+ hasSeveralModifiedLayers = vectModifiedLayerNames.size() > 1;
10912
+ }
10913
+ else if ( vlayer->isModified() )
10914
+ {
10883
10915
isModified = true;
10916
+ modifiedLayerNames = vlayer->name();
10917
+ }
10884
10918
10885
10919
if ( !vlayer->isEditable() && !vlayer->readOnly() )
10886
10920
{
@@ -10915,7 +10949,9 @@ bool QgisApp::toggleEditing( QgsMapLayer *layer, bool allowCancel )
10915
10949
10916
10950
switch ( QMessageBox::question( nullptr,
10917
10951
tr( "Stop Editing" ),
10918
- tr( "Do you want to save the changes to layer %1?" ).arg( vlayer->name() ),
10952
+ hasSeveralModifiedLayers ?
10953
+ tr( "Do you want to save the changes to layers %1?" ).arg( modifiedLayerNames ) :
10954
+ tr( "Do you want to save the changes to layer %1?" ).arg( modifiedLayerNames ),
10919
10955
buttons ) )
10920
10956
{
10921
10957
case QMessageBox::Cancel:
0 commit comments