Skip to content

Commit 57fdf39

Browse files
committed
Fix registry layer redering when others layers changes in the render widget
1 parent 06810d0 commit 57fdf39

File tree

2 files changed

+15
-21
lines changed

2 files changed

+15
-21
lines changed

core/registry.py

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -185,25 +185,12 @@ def setup_renderer(self, color=None):
185185
})
186186
self.renderer = QgsSingleSymbolRenderer(border_symbol)
187187

188-
def add_registry_layer_to_canvases(self):
189-
"""Add memory layer to all active view widget canvases."""
188+
def update_registry_layer_in_canvases(self):
189+
"""Refresh render layers in all active canvases to update registry layer visibility."""
190190
from ThRasE.gui.main_dialog import ThRasEDialog
191191
for view_widget in ThRasEDialog.view_widgets:
192192
if view_widget.is_active:
193-
layers = view_widget.render_widget.canvas.layers()
194-
if self.memory_layer not in layers:
195-
# add as top layer
196-
view_widget.render_widget.canvas.setLayers([self.memory_layer] + layers)
197-
198-
def remove_registry_layer_from_canvases(self):
199-
"""Remove memory layer from all view widget canvases."""
200-
from ThRasE.gui.main_dialog import ThRasEDialog
201-
for view_widget in ThRasEDialog.view_widgets:
202-
if view_widget.is_active:
203-
layers = view_widget.render_widget.canvas.layers()
204-
if self.memory_layer in layers:
205-
layers.remove(self.memory_layer)
206-
view_widget.render_widget.canvas.setLayers(layers)
193+
view_widget.render_widget.update_render_layers()
207194

208195
def delete(self):
209196
self.clear()
@@ -213,7 +200,7 @@ def delete(self):
213200
# clear memory layer
214201
if self.memory_layer:
215202
self.memory_layer.dataProvider().truncate()
216-
self.remove_registry_layer_from_canvases()
203+
self.update_registry_layer_in_canvases()
217204

218205
def clear(self):
219206
# hide all features by setting a filter that matches nothing
@@ -234,7 +221,7 @@ def show_all(self):
234221
return
235222

236223
# ensure layer is in canvases
237-
self.add_registry_layer_to_canvases()
224+
self.update_registry_layer_in_canvases()
238225

239226
# apply renderer
240227
self.memory_layer.setRenderer(self.renderer.clone())
@@ -345,7 +332,7 @@ def set_current_group(self, idx_group):
345332
return
346333

347334
# ensure layer is in canvases
348-
self.add_registry_layer_to_canvases()
335+
self.update_registry_layer_in_canvases()
349336

350337
# apply renderer for current group
351338
if self.memory_layer:

gui/render_widget.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ def set_crs(self, crs):
6262

6363
def update_render_layers(self):
6464
with block_signals_to(self):
65+
from ThRasE.core.editing import LayerToEdit
6566
# set the CRS of the canvas view
6667
if self.crs:
6768
# use the crs of thematic layer to edit
@@ -77,8 +78,14 @@ def update_render_layers(self):
7778
self.canvas.setLayers([])
7879
self.refresh()
7980
return
80-
# set to canvas
81-
self.canvas.setLayers(valid_layers)
81+
# include registry memory layer if active
82+
if LayerToEdit.current and LayerToEdit.current.registry.memory_layer:
83+
memory_layer = LayerToEdit.current.registry.memory_layer
84+
# add registry layer on top of other layers
85+
self.canvas.setLayers([memory_layer] + valid_layers)
86+
else:
87+
# set to canvas without registry layer
88+
self.canvas.setLayers(valid_layers)
8289
# set init extent from other view if any is activated else set layer extent
8390
from ThRasE.gui.main_dialog import ThRasEDialog
8491
others_extents = [view_widget.render_widget.canvas.extent() for view_widget in ThRasEDialog.view_widgets

0 commit comments

Comments
 (0)