From 2864058974422256729e94d92905e7ddb8e480df Mon Sep 17 00:00:00 2001 From: sfhbarnett <45679976+sfhbarnett@users.noreply.github.com> Date: Thu, 4 Aug 2022 17:01:19 +0200 Subject: [PATCH] fix range slider drag crash on PyQt6 (#108) * fix range slider drag crash on PyQt6 * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- src/superqt/sliders/_generic_range_slider.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/superqt/sliders/_generic_range_slider.py b/src/superqt/sliders/_generic_range_slider.py index f5142da..7452c41 100644 --- a/src/superqt/sliders/_generic_range_slider.py +++ b/src/superqt/sliders/_generic_range_slider.py @@ -146,11 +146,17 @@ class _GenericRangeSlider(_GenericSlider[Tuple], Generic[_T]): def mouseMoveEvent(self, ev: QtGui.QMouseEvent) -> None: if self._pressedControl == SC_BAR: ev.accept() - delta = self._clickOffset - self._pixelPosToRangeValue(self._pick(ev.pos())) + delta = self._clickOffset - self._pixelPosToRangeValue( + self._pick(self._event_position(ev)) + ) self._offsetAllPositions(-delta, self._sldPosAtPress) else: super().mouseMoveEvent(ev) + def _event_position(self, event): + # API changes between PyQt5 (.pos()) and PyQt6 (.position()) + return event.pos() if hasattr(event, "pos") else event.position() + # ############### Implementation Details ####################### def _setPosition(self, val):