keep position on handle

This commit is contained in:
2024-03-24 20:06:00 +01:00
parent 017a51a24a
commit 5f30862a83

View File

@@ -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))