1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-01-24 13:32:50 -05:00

fix: slider movement for edge cases at 2% and 97% fill (#142)

* fix: slider movement for edge cases at 2% and 97% fill

* fix: slider movement drag offset
This commit is contained in:
Shayan
2025-09-01 16:41:06 +03:30
committed by GitHub
parent 271f8bf78f
commit 924f2f6ea7

View File

@@ -52,8 +52,9 @@ Item {
StyledRect {
id: sliderFill
width: parent.width * ((slider.value - slider.minimum)
/ (slider.maximum - slider.minimum))
width: (parent.width - sliderHandle.width) * (
(slider.value - slider.minimum) / (slider.maximum - slider.minimum)
) + sliderHandle.width
height: parent.height
radius: parent.radius
color: slider.enabled ? Theme.primary : Theme.surfaceVariantText
@@ -78,8 +79,7 @@ Item {
Theme.surfaceVariantText,
1.3)
border.width: 2
x: Math.max(0, Math.min(parent.width - width,
sliderFill.width - width / 2))
x: sliderFill.width - width
anchors.verticalCenter: parent.verticalCenter
scale: sliderMouseArea.containsMouse
|| sliderMouseArea.pressed ? 1.2 : 1
@@ -181,7 +181,9 @@ Item {
slider.isDragging = true
sliderMouseArea.isDragging = true
let ratio = Math.max(
0, Math.min(1, mouse.x / width))
0, Math.min(1, (
mouse.x - sliderHandle.width / 2) / (
width - sliderHandle.width)))
let newValue = Math.round(
slider.minimum + ratio
* (slider.maximum - slider.minimum))
@@ -200,8 +202,9 @@ Item {
if (pressed && slider.isDragging
&& slider.enabled) {
let ratio = Math.max(
0, Math.min(1,
mouse.x / width))
0, Math.min(1, (
mouse.x - sliderHandle.width / 2) / (
width - sliderHandle.width)))
let newValue = Math.round(
slider.minimum + ratio
* (slider.maximum - slider.minimum))
@@ -213,7 +216,9 @@ Item {
onClicked: mouse => {
if (slider.enabled && !slider.isDragging) {
let ratio = Math.max(
0, Math.min(1, mouse.x / width))
0, Math.min(1, (
mouse.x - sliderHandle.width / 2) / (
width - sliderHandle.width)))
let newValue = Math.round(
slider.minimum + ratio
* (slider.maximum - slider.minimum))