Skip to content

Commit 61285a9

Browse files
committed
do not destroy layers created outside the dialog (fix #7903)
1 parent cb1e47b commit 61285a9

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

python/plugins/db_manager/dlg_import_vector.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ def __init__(self, inLayer, outDb, outUri, parent=None):
4646

4747
self.mode = self.ASK_FOR_INPUT_MODE if self.inLayer is None else self.HAS_INPUT_MODE
4848

49+
# used to delete the inlayer whether created inside this dialog
50+
self.inLayerMustBeDestroyed = False
51+
4952
self.populateSchemas()
5053
self.populateTables()
5154
self.populateLayers()
@@ -107,19 +110,21 @@ def populateLayers(self):
107110
self.cboInputLayer.addItem( layer.name(), index )
108111

109112
def deleteInputLayer(self):
110-
""" destroy the input layer instance, but only if it was
113+
""" unset the input layer, then destroy it but only if it was
111114
created from this dialog """
112115
if self.mode == self.ASK_FOR_INPUT_MODE and self.inLayer:
113-
self.inLayer.deleteLater()
116+
if self.inLayerMustBeDestroyed:
117+
self.inLayer.deleteLater()
114118
self.inLayer = None
119+
self.inLayerMustBeDestroyed = False
115120
return True
116121
return False
117122

118123
def chooseInputFile(self):
119124
vectorFormats = qgis.core.QgsProviderRegistry.instance().fileVectorFilters()
120125
# get last used dir and format
121126
settings = QSettings()
122-
lastDir = settings.value("/db_manager/lastUsedDir", "").toString()
127+
lastDir = settings.value("/db_manager/lastUsedDir", "").toString()
123128
lastVectorFormat = settings.value("/UI/lastVectorFileFilter", "").toString()
124129
# ask for a filename
125130
filename = QFileDialog.getOpenFileName(self, "Choose the file to import", lastDir, vectorFormats, lastVectorFormat)
@@ -159,10 +164,12 @@ def updateInputLayer(self):
159164
return False
160165

161166
self.inLayer = layer
167+
self.inLayerMustBeDestroyed = True
162168

163169
else:
164170
legendIndex = self.cboInputLayer.itemData( index ).toInt()[0]
165171
self.inLayer = iface.legendInterface().layers()[ legendIndex ]
172+
self.inLayerMustBeDestroyed = False
166173

167174
# update the output table name
168175
self.cboTable.setEditText(self.inLayer.name())

0 commit comments

Comments
 (0)