keep position on handle
This commit is contained in:
@@ -52,6 +52,7 @@ class RangeSlider(QWidget):
|
|||||||
|
|
||||||
self.selected_handle = None
|
self.selected_handle = None
|
||||||
self.selection_drag_range = (self.min_value, self.max_value)
|
self.selection_drag_range = (self.min_value, self.max_value)
|
||||||
|
self.drag_y_offset_in_handle = 0
|
||||||
|
|
||||||
def set_maximum(self, max: int):
|
def set_maximum(self, max: int):
|
||||||
if self.max_value == max:
|
if self.max_value == max:
|
||||||
@@ -127,9 +128,11 @@ class RangeSlider(QWidget):
|
|||||||
if self._is_on_handle(self.lower_value, pos.y(), direction=1):
|
if self._is_on_handle(self.lower_value, pos.y(), direction=1):
|
||||||
self.selected_handle = self.lower_value
|
self.selected_handle = self.lower_value
|
||||||
self.selection_drag_range = (self.min_value, self.upper_value.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):
|
if self._is_on_handle(self.upper_value, pos.y(), direction=-1):
|
||||||
self.selected_handle = self.upper_value
|
self.selected_handle = self.upper_value
|
||||||
self.selection_drag_range = (self.lower_value.value, self.max_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:
|
def mouseReleaseEvent(self, event: PySide6.QtGui.QMouseEvent) -> None:
|
||||||
self.selected_handle = None
|
self.selected_handle = None
|
||||||
@@ -137,7 +140,7 @@ class RangeSlider(QWidget):
|
|||||||
def mouseMoveEvent(self, e: PySide6.QtGui.QMouseEvent) -> None:
|
def mouseMoveEvent(self, e: PySide6.QtGui.QMouseEvent) -> None:
|
||||||
if self.selected_handle != None:
|
if self.selected_handle != None:
|
||||||
pos: QPoint = e.pos()
|
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]:
|
if self.selection_drag_range[0] <= value <= self.selection_drag_range[1]:
|
||||||
self.selected_handle.value = value
|
self.selected_handle.value = value
|
||||||
# print("%s, %s" %(self.lower_value.value, self.upper_value.value))
|
# print("%s, %s" %(self.lower_value.value, self.upper_value.value))
|
||||||
|
|||||||
Reference in New Issue
Block a user