keep position on handle
This commit is contained in:
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user