From 5f30862a83154b823cac1a8ab8e4244178cab62a Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Sun, 24 Mar 2024 20:06:00 +0100 Subject: [PATCH] keep position on handle --- src/ui/rangeslider.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ui/rangeslider.py b/src/ui/rangeslider.py index 775bd72..ab1009f 100644 --- a/src/ui/rangeslider.py +++ b/src/ui/rangeslider.py @@ -52,6 +52,7 @@ class RangeSlider(QWidget): self.selected_handle = None self.selection_drag_range = (self.min_value, self.max_value) + self.drag_y_offset_in_handle = 0 def set_maximum(self, max: int): if self.max_value == max: @@ -127,9 +128,11 @@ class RangeSlider(QWidget): if self._is_on_handle(self.lower_value, pos.y(), direction=1): self.selected_handle = self.lower_value self.selection_drag_range = (self.min_value, self.upper_value.value) + self.drag_y_offset_in_handle = self.selected_handle.value - self._pixel_to_value(pos.y()) if self._is_on_handle(self.upper_value, pos.y(), direction=-1): self.selected_handle = self.upper_value self.selection_drag_range = (self.lower_value.value, self.max_value) + self.drag_y_offset_in_handle = self.selected_handle.value - self._pixel_to_value(pos.y()) def mouseReleaseEvent(self, event: PySide6.QtGui.QMouseEvent) -> None: self.selected_handle = None @@ -137,7 +140,7 @@ class RangeSlider(QWidget): def mouseMoveEvent(self, e: PySide6.QtGui.QMouseEvent) -> None: if self.selected_handle != None: pos: QPoint = e.pos() - value = self._pixel_to_value(pos.y()) + value = self._pixel_to_value(pos.y()) + self.drag_y_offset_in_handle if self.selection_drag_range[0] <= value <= self.selection_drag_range[1]: self.selected_handle.value = value # print("%s, %s" %(self.lower_value.value, self.upper_value.value))