@@ -156,9 +156,15 @@ void QgsMapToolShowHideLabels::showHideLabels( QMouseEvent * e )
156
156
157
157
QgsDebugMsg ( " Number of selected labels or features: " + QString::number ( selectedFeatIds.size () ) );
158
158
159
+ if ( selectedFeatIds.isEmpty () )
160
+ {
161
+ return ;
162
+ }
159
163
160
164
bool labelChanged = false ;
165
+ QString editTxt = doHide ? tr ( " Hid labels" ) : tr ( " Showed labels" );
161
166
167
+ vlayer->beginEditCommand ( editTxt );
162
168
foreach ( const QgsFeatureId &fid, selectedFeatIds )
163
169
{
164
170
if ( showHideLabel ( vlayer, fid, doHide ) )
@@ -167,11 +173,16 @@ void QgsMapToolShowHideLabels::showHideLabels( QMouseEvent * e )
167
173
labelChanged = true ;
168
174
}
169
175
}
176
+ vlayer->endEditCommand ();
170
177
171
178
if ( labelChanged )
172
179
{
173
180
mCanvas ->refresh ();
174
181
}
182
+ else
183
+ {
184
+ vlayer->destroyEditCommand ();
185
+ }
175
186
}
176
187
177
188
bool QgsMapToolShowHideLabels::selectedFeatures ( QgsVectorLayer* vlayer,
@@ -294,14 +305,10 @@ bool QgsMapToolShowHideLabels::showHideLabel( QgsVectorLayer* vlayer,
294
305
}
295
306
296
307
// different attribute value, edit table
297
- QString editTxt = hide ? tr ( " Hid label" ) : tr ( " Showed label" );
298
- vlayer->beginEditCommand ( editTxt );
299
308
if ( !vlayer->changeAttributeValue ( fid, showCol, curVal, false ) )
300
309
{
301
310
QgsDebugMsg ( " Failed write to attribute table" );
302
- vlayer->endEditCommand ();
303
311
return false ;
304
312
}
305
- vlayer->endEditCommand ();
306
313
return true ;
307
314
}
0 commit comments