Skip to content

Commit d387c93

Browse files
committedJan 1, 2013
Fix #6725
- Restore toggle editing button state in attribute table editor if toggling canceled or commit/rollback changes fails
1 parent ce98348 commit d387c93

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed
 

‎src/app/qgsattributetabledialog.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,11 @@ QgsAttributeTableDialog::QgsAttributeTableDialog( QgsVectorLayer *theLayer, QWid
107107
bool canDeleteAttributes = mLayer->dataProvider()->capabilities() & QgsVectorDataProvider::DeleteAttributes;
108108
bool canAddFeatures = mLayer->dataProvider()->capabilities() & QgsVectorDataProvider::AddFeatures;
109109

110+
mToggleEditingButton->blockSignals( true );
110111
mToggleEditingButton->setCheckable( true );
111112
mToggleEditingButton->setChecked( mLayer->isEditable() );
112113
mToggleEditingButton->setEnabled( canChangeAttributes && !mLayer->isReadOnly() );
114+
mToggleEditingButton->blockSignals( false );
113115

114116
mSaveEditsButton->setEnabled( canChangeAttributes && mLayer->isEditable() );
115117
mOpenFieldCalculator->setEnabled(( canChangeAttributes || canAddAttributes ) && mLayer->isEditable() );
@@ -120,7 +122,6 @@ QgsAttributeTableDialog::QgsAttributeTableDialog( QgsVectorLayer *theLayer, QWid
120122
mAddFeature->setHidden( !canAddFeatures || mLayer->geometryType() != QGis::NoGeometry );
121123

122124
// info from table to application
123-
connect( this, SIGNAL( editingToggled( QgsMapLayer * ) ), QgisApp::instance(), SLOT( toggleEditing( QgsMapLayer * ) ) );
124125
connect( this, SIGNAL( saveEdits( QgsMapLayer * ) ), QgisApp::instance(), SLOT( saveEdits( QgsMapLayer * ) ) );
125126

126127
// info from layer to table
@@ -665,7 +666,13 @@ void QgsAttributeTableDialog::on_mAdvancedSearchButton_clicked()
665666

666667
void QgsAttributeTableDialog::on_mToggleEditingButton_toggled()
667668
{
668-
emit editingToggled( mLayer );
669+
if ( !mLayer )
670+
return;
671+
if ( !QgisApp::instance()->toggleEditing( mLayer ) )
672+
{
673+
// restore gui state if toggling was canceled or layer commit/rollback failed
674+
editingToggled();
675+
}
669676
}
670677

671678
void QgsAttributeTableDialog::on_mSaveEditsButton_clicked()

0 commit comments

Comments
 (0)
Please sign in to comment.