26
26
#include " qgsproviderregistry.h"
27
27
#include " qgsmessagebar.h"
28
28
#include " qgssettings.h"
29
+ #include " qgslayertreeregistrybridge.h"
29
30
30
31
#include < QDomDocument>
31
32
#include < QDomElement>
@@ -347,13 +348,17 @@ void QgsHandleBadLayers::editAuthCfg()
347
348
348
349
void QgsHandleBadLayers::apply ()
349
350
{
351
+ QgsProject::instance ()->layerTreeRegistryBridge ()->setEnabled ( true );
352
+
350
353
QList<QgsMapLayer *> toRemove;
351
354
for ( const auto &l : QgsProject::instance ()->mapLayers ( ) )
352
355
{
353
356
if ( ! l->isValid () )
354
357
toRemove << l;
355
358
}
359
+
356
360
QgsProject::instance ()->removeMapLayers ( toRemove );
361
+
357
362
for ( int i = 0 ; i < mLayerList ->rowCount (); i++ )
358
363
{
359
364
int idx = mLayerList ->item ( i, 0 )->data ( Qt::UserRole ).toInt ();
@@ -372,11 +377,15 @@ void QgsHandleBadLayers::apply()
372
377
item->setForeground ( QBrush ( Qt::red ) );
373
378
}
374
379
}
380
+ QgsProject::instance ()->layerTreeRegistryBridge ()->setEnabled ( false );
381
+
382
+ if ( mLayerList ->rowCount () == 0 )
383
+ accept ();
384
+
375
385
}
376
386
377
387
void QgsHandleBadLayers::accept ()
378
388
{
379
- apply ();
380
389
381
390
if ( mLayerList ->rowCount () > 0 &&
382
391
QMessageBox::warning ( this ,
@@ -395,6 +404,9 @@ void QgsHandleBadLayers::accept()
395
404
if ( ! l->isValid () )
396
405
toRemove << l;
397
406
}
407
+ QgsProject::instance ()->layerTreeRegistryBridge ()->setEnabled ( true );
408
+ QgsProject::instance ()->removeMapLayers ( toRemove );
409
+ QgsProject::instance ()->layerTreeRegistryBridge ()->setEnabled ( false );
398
410
mLayerList ->clear ();
399
411
400
412
QDialog::accept ();
0 commit comments