File tree 1 file changed +12
-2
lines changed
python/plugins/processing/gui
1 file changed +12
-2
lines changed Original file line number Diff line number Diff line change @@ -143,6 +143,8 @@ def __init__(self, param):
143
143
super (NumberInputPanel , self ).__init__ (None )
144
144
self .setupUi (self )
145
145
146
+ self .layer = None
147
+
146
148
self .spnValue .setExpressionsEnabled (True )
147
149
148
150
self .param = param
@@ -211,7 +213,8 @@ def __init__(self, param):
211
213
212
214
def setDynamicLayer (self , layer ):
213
215
try :
214
- self .btnDataDefined .setVectorLayer (self .getLayerFromValue (layer ))
216
+ self .layer = self .getLayerFromValue (layer )
217
+ self .btnDataDefined .setVectorLayer (self .layer )
215
218
except :
216
219
pass
217
220
@@ -221,7 +224,14 @@ def getLayerFromValue(self, value):
221
224
value , ok = value .source .valueAsString (context .expressionContext ())
222
225
if isinstance (value , str ):
223
226
value = QgsProcessingUtils .mapLayerFromString (value , context )
224
- return value
227
+ if value is None :
228
+ return None
229
+
230
+ # need to return layer with ownership - otherwise layer may be deleted when context
231
+ # goes out of scope
232
+ new_layer = context .takeResultLayer (value .id ())
233
+ # if we got ownership, return that - otherwise just return the layer (which may be owned by the project)
234
+ return new_layer if new_layer is not None else value
225
235
226
236
def getValue (self ):
227
237
if self .btnDataDefined is not None and self .btnDataDefined .isActive ():
You can’t perform that action at this time.
0 commit comments