diff --git a/piker/ui/_graphics/_cursor.py b/piker/ui/_graphics/_cursor.py index cab01856..d65c5dce 100644 --- a/piker/ui/_graphics/_cursor.py +++ b/piker/ui/_graphics/_cursor.py @@ -377,15 +377,16 @@ class Cursor(pg.GraphicsObject): # px perfect... line_offset = self._lw / 2 - if iy != last_iy and self._y_label_update: + if iy != last_iy: # update y-range items self.graphics[plot]['hl'].setY(iy + line_offset) - self.graphics[self.active_plot]['yl'].update_label( - abs_pos=plot.mapFromView(QPointF(ix, iy + line_offset)), - value=iy - ) + if self._y_label_update: + self.graphics[self.active_plot]['yl'].update_label( + abs_pos=plot.mapFromView(QPointF(ix, iy + line_offset)), + value=iy + ) # update all trackers for item in self._trackers: @@ -425,15 +426,22 @@ class Cursor(pg.GraphicsObject): except AttributeError: return self.plots[0].boundingRect() - def show_xhair(self) -> None: + def show_xhair( + self, + y_label_level: float = None, + ) -> None: g = self.graphics[self.active_plot] # show horiz line and y-label g['hl'].show() g['vl'].show() + self._y_label_update = True yl = g['yl'] # yl.fg_color = pg.mkColor(hcolor('black')) # yl.bg_color = pg.mkColor(hcolor(self.label_color)) + if y_label_level: + yl.update_from_data(0, y_label_level, _save_last=False) + yl.show() def hide_xhair( @@ -447,12 +455,15 @@ class Cursor(pg.GraphicsObject): g['hl'].hide() g['vl'].hide() + # only disable cursor y-label updates + # if we're highlighting a line yl = g['yl'] if hide_label: yl.hide() + elif y_label_level: - yl.update_from_data(0, y_label_level) + yl.update_from_data(0, y_label_level, _save_last=False) if fg_color is not None: yl.fg_color = pg.mkColor(hcolor(fg_color)) diff --git a/piker/ui/_graphics/_lines.py b/piker/ui/_graphics/_lines.py index 95e24b82..5ac174aa 100644 --- a/piker/ui/_graphics/_lines.py +++ b/piker/ui/_graphics/_lines.py @@ -320,9 +320,10 @@ class LevelLine(pg.InfiniteLine): self.currentPen = self.hoverPen - # only disable cursor y-label updates - # if we're highlighting a line - cur._y_label_update = False + if self not in cur._trackers: + # only disable cursor y-label updates + # if we're highlighting a line + cur._y_label_update = False # add us to cursor state cur.add_hovered(self) @@ -348,7 +349,7 @@ class LevelLine(pg.InfiniteLine): cur._hovered.remove(self) if self not in cur._trackers: - cur.show_xhair() + cur.show_xhair(y_label_level=self.value()) if not self._always_show_labels: for at, label in self._labels: