File tree Expand file tree Collapse file tree 3 files changed +27
-9
lines changed Expand file tree Collapse file tree 3 files changed +27
-9
lines changed Original file line number Diff line number Diff line change 11Changelog
22=========
33
4+ 2.0.3
5+ -----
6+ Bug fixes
7+ ~~~~~~~~~
8+ - Fix an error that happened when the histogram widget was open, but a layer that doesn't support
9+ histogramming (e.g., a labels layer) was selected.
10+
4112.0.2
512-----
613Dependencies
Original file line number Diff line number Diff line change @@ -224,14 +224,24 @@ def _setup_callbacks(self) -> None:
224224 self ._update_layers
225225 )
226226
227+ @property
228+ def _valid_layer_selection (self ) -> bool :
229+ """
230+ Return `True` if layer selection is valid.
231+ """
232+ return self .n_selected_layers in self .n_layers_input and all (
233+ isinstance (layer , self .input_layer_types ) for layer in self .layers
234+ )
235+
227236 def _update_layers (self , event : napari .utils .events .Event ) -> None :
228237 """
229238 Update the ``layers`` attribute with currently selected layers and re-draw.
230239 """
231240 self .layers = list (self .viewer .layers .selection )
232241 self .layers = sorted (self .layers , key = lambda layer : layer .name )
233242 self .on_update_layers ()
234- self ._draw ()
243+ if self ._valid_layer_selection :
244+ self ._draw ()
235245
236246 def _draw (self ) -> None :
237247 """
@@ -243,10 +253,7 @@ def _draw(self) -> None:
243253 with mplstyle .context (self .napari_theme_style_sheet ):
244254 # everything should be done in the style context
245255 self .clear ()
246- if self .n_selected_layers in self .n_layers_input and all (
247- isinstance (layer , self .input_layer_types )
248- for layer in self .layers
249- ):
256+ if self ._valid_layer_selection :
250257 self .draw ()
251258 self .canvas .draw () # type: ignore[no-untyped-call]
252259
Original file line number Diff line number Diff line change @@ -55,8 +55,10 @@ def on_update_layers(self) -> None:
5555 Called when the selected layers are updated.
5656 """
5757 super ().on_update_layers ()
58- for layer in self .viewer .layers :
59- layer .events .contrast_limits .connect (self ._update_contrast_lims )
58+ if self ._valid_layer_selection :
59+ self .layers [0 ].events .contrast_limits .connect (
60+ self ._update_contrast_lims
61+ )
6062
6163 def _update_contrast_lims (self ) -> None :
6264 for lim , line in zip (
@@ -209,10 +211,12 @@ def draw(self) -> None:
209211 # get the colormap from the layer depending on its type
210212 if isinstance (self .layers [0 ], napari .layers .Points ):
211213 colormap = self .layers [0 ].face_colormap
212- self .layers [0 ].face_color = self .x_axis_key
214+ if self .x_axis_key :
215+ self .layers [0 ].face_color = self .x_axis_key
213216 elif isinstance (self .layers [0 ], napari .layers .Vectors ):
214217 colormap = self .layers [0 ].edge_colormap
215- self .layers [0 ].edge_color = self .x_axis_key
218+ if self .x_axis_key :
219+ self .layers [0 ].edge_color = self .x_axis_key
216220 else :
217221 colormap = None
218222
You can’t perform that action at this time.
0 commit comments