Skip to content

Commit b09877b

Browse files
committed
[GRASS] start/close edit fixes
1 parent d3f79af commit b09877b

3 files changed

Lines changed: 10 additions & 9 deletions

File tree

src/providers/grass/qgsgrassprovider.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -585,13 +585,15 @@ bool QgsGrassProvider::closeEdit( bool newMap, QgsVectorLayer *vectorLayer )
585585

586586
mEditBuffer = 0;
587587
mEditLayer = 0;
588+
mLayer->closeEdit();
588589
if ( mLayer->map()->closeEdit( newMap ) )
589590
{
590591
loadMapInfo();
591592
if ( vectorLayer )
592593
{
593594
vectorLayer->updateFields();
594595
}
596+
connect( mLayer->map(), SIGNAL( dataChanged() ), SLOT( onDataChanged() ) );
595597
return true;
596598
}
597599
return false;
@@ -1006,7 +1008,10 @@ void QgsGrassProvider::startEditing( QgsVectorLayer *vectorLayer )
10061008
return;
10071009
}
10081010

1011+
// disconnect dataChanged() because the changes are done here and we know about them
1012+
disconnect( mLayer->map(), SIGNAL( dataChanged() ), this, SLOT( onDataChanged() ) );
10091013
mLayer->map()->startEdit();
1014+
mLayer->startEdit();
10101015

10111016
mEditBuffer = vectorLayer->editBuffer();
10121017
connect( mEditBuffer, SIGNAL( featureAdded( QgsFeatureId ) ), SLOT( onFeatureAdded( QgsFeatureId ) ) );

src/providers/grass/qgsgrassvectormap.cpp

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -283,11 +283,6 @@ bool QgsGrassVectorMap::startEdit()
283283

284284
mIsEdited = true;
285285

286-
Q_FOREACH ( QgsGrassVectorMapLayer *l, mLayers )
287-
{
288-
l->startEdit();
289-
}
290-
291286
mValid = true;
292287
printDebug();
293288

@@ -312,10 +307,6 @@ bool QgsGrassVectorMap::closeEdit( bool newMap )
312307
closeAllIterators(); // blocking
313308

314309
QgsGrass::lock();
315-
Q_FOREACH ( QgsGrassVectorMapLayer *l, mLayers )
316-
{
317-
l->closeEdit();
318-
}
319310

320311
mOldLids.clear();
321312
mNewLids.clear();
@@ -383,6 +374,10 @@ QgsGrassVectorMapLayer * QgsGrassVectorMap::openLayer( int field )
383374
{
384375
QgsDebugMsg( "Layer exists" );
385376
layer = l;
377+
if ( layer->userCount() == 0 )
378+
{
379+
layer->load();
380+
}
386381
}
387382
}
388383

src/providers/grass/qgsgrassvectormaplayer.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,7 @@ void QgsGrassVectorMapLayer::closeEdit()
475475
if ( mDriver )
476476
{
477477
db_close_database_shutdown_driver( mDriver );
478+
mDriver = 0;
478479
}
479480
}
480481

0 commit comments

Comments
 (0)