diff --git a/piker/ui/_axes.py b/piker/ui/_axes.py index a4ae601b..1dac898c 100644 --- a/piker/ui/_axes.py +++ b/piker/ui/_axes.py @@ -20,8 +20,9 @@ Chart axes graphics and behavior. """ from __future__ import annotations from functools import lru_cache -from typing import Callable from math import floor +import platform +from typing import Callable import polars as pl import pyqtgraph as pg @@ -42,6 +43,7 @@ from ._style import DpiAwareFont, hcolor, _font from ._interaction import ChartView from ._dataviz import Viz +_friggin_macos: bool = platform.system() == 'Darwin' _axis_pen = pg.mkPen(hcolor('bracket')) @@ -172,6 +174,7 @@ class Axis(pg.AxisItem): text_offset = None if self.orientation in ('bottom',): text_offset = floor(0.25 * font_size) + elif self.orientation in ('left', 'right'): text_offset = floor(font_size / 2) @@ -293,15 +296,22 @@ class PriceAxis(Axis): ) -> None: self._min_tick = size - def size_to_values(self) -> None: - # Call PyQtGraph's internal width update mechanism - # This respects autoExpandTextSpace and updates min/max constraints - self._updateWidth() - # tell Qt our preferred size changed so layout recalculates - self.updateGeometry() - # force parent plot item to recalculate its layout - if self.pi and hasattr(self.pi, 'updateGeometry'): - self.pi.updateGeometry() + if _friggin_macos: + def size_to_values(self) -> None: + # Call PyQtGraph's internal width update mechanism + # This respects autoExpandTextSpace and updates min/max constraints + self._updateWidth() + # tell Qt our preferred size changed so layout recalculates + self.updateGeometry() + # force parent plot item to recalculate its layout + if self.pi and hasattr(self.pi, 'updateGeometry'): + self.pi.updateGeometry() + + else: + def size_to_values(self) -> None: + # XXX, old code! + self.setWidth(self.typical_br.width()) + # XXX: drop for now since it just eats up h space @@ -344,15 +354,21 @@ class DynamicDateAxis(Axis): 1: '%H:%M:%S', } - def size_to_values(self) -> None: - # Call PyQtGraph's internal height update mechanism - # This respects autoExpandTextSpace and updates min/max constraints - self._updateHeight() - # tell Qt our preferred size changed so layout recalculates - self.updateGeometry() - # force parent plot item to recalculate its layout - if self.pi and hasattr(self.pi, 'updateGeometry'): - self.pi.updateGeometry() + if _friggin_macos: + def size_to_values(self) -> None: + # Call PyQtGraph's internal height update mechanism + # This respects autoExpandTextSpace and updates min/max constraints + self._updateHeight() + # tell Qt our preferred size changed so layout recalculates + self.updateGeometry() + # force parent plot item to recalculate its layout + if self.pi and hasattr(self.pi, 'updateGeometry'): + self.pi.updateGeometry() + + else: + def size_to_values(self) -> None: + # XXX, old code! + self.setHeight(self.typical_br.height() + 1) def _indexes_to_timestrs( self,