diff --git a/src/fenigma/grid_widget.py b/src/fenigma/grid_widget.py index 520944b..b713779 100644 --- a/src/fenigma/grid_widget.py +++ b/src/fenigma/grid_widget.py @@ -528,13 +528,20 @@ class GridCanvas(Gtk.DrawingArea): cr.stroke() def _draw_geo_overlays(self, cr, cell_w, cell_h, grid_h) -> None: - to_show = [] - for category, obj in self.board.placed_entities(): - if obj is self.hovered or obj.show_geo_desc: - to_show.append(obj) - for category, obj in self.board.ambiguous_entities(): - if obj is self.hovered or obj.show_geo_desc: - to_show.append(obj) + """Bearing/distance overlay lines for whatever's hovered, pinned + via show_geo_desc, or currently selected. Selection matters even + for a target that never resolved at all (no coord, no + potential_coords, e.g. two clues that don't quite geometrically + agree), it's not in placed_entities()/ambiguous_entities() either + way, so this looks at every RP/Target directly rather than those, + the only way to let the user eyeball a bad-but-close reading + against what it should have crossed.""" + candidates = list(self.board.reference_points) + list(self.board.targets) + to_show = [ + obj for obj in candidates + if obj.location.clues and not self._excluded_from_map(obj) + and (obj is self.hovered or obj.show_geo_desc or obj is self.selected) + ] for obj in to_show: for clue in obj.location.clues: