diff --git a/src/declarativeimports/plasmacomponents3/Slider.qml b/src/declarativeimports/plasmacomponents3/Slider.qml --- a/src/declarativeimports/plasmacomponents3/Slider.qml +++ b/src/declarativeimports/plasmacomponents3/Slider.qml @@ -28,7 +28,7 @@ implicitWidth: control.orientation === Qt.Horizontal ? units.gridUnit * 12 : units.gridUnit * 1.6 implicitHeight: control.orientation === Qt.Horizontal ? units.gridUnit * 1.6 : units.gridUnit * 12 - + wheelEnabled: true snapMode: T.Slider.SnapOnRelease PlasmaCore.Svg { @@ -94,14 +94,16 @@ Repeater { id: repeater - model: control.stepSize > 0 ? 1 + (control.to - control.from) / control.stepSize : 0 + readonly property int stepCount: (control.to - control.from) / control.stepSize + model: control.stepSize && stepCount < 20 ? 1 + stepCount : 0 anchors.fill: parent Rectangle { color: PlasmaCore.ColorScope.textColor + opacity: 0.3 width: background.horizontal ? units.devicePixelRatio : units.gridUnit/2 height: background.horizontal ? units.gridUnit/2 : units.devicePixelRatio - y: background.horizontal ? background.height : handle.height / 2 + index * ((repeater.height - handle.height) / (repeater.count > 1 ? repeater.count - 1 : 1)) + y: background.horizontal ? background.height + units.devicePixelRatio : handle.height / 2 + index * ((repeater.height - handle.height) / (repeater.count > 1 ? repeater.count - 1 : 1)) x: background.horizontal ? handle.width / 2 + index * ((repeater.width - handle.width) / (repeater.count > 1 ? repeater.count - 1 : 1)) : background.width } } diff --git a/tests/components/slider3.qml b/tests/components/slider3.qml new file mode 100644 --- /dev/null +++ b/tests/components/slider3.qml @@ -0,0 +1,54 @@ +import QtQuick 2.0 +import QtQuick.Layouts 1.3 + +import org.kde.kirigami 2.5 as Kirigami +import org.kde.plasma.components 3.0 +import QtQuick.Controls 2.5 as QQC2 +import org.kde.plasma.components 2.0 as PC2 + +// Run with qmlscene to use qqc2-desktop-style + +Kirigami.ApplicationWindow { + pageStack.initialPage: Kirigami.Page { + Kirigami.FormLayout { + anchors.fill: parent + PC2.Slider { + Layout.fillWidth: true + Kirigami.FormData.label: "PC2 slider" + maximumValue: slider.to + stepSize: slider.stepSize + } + QQC2.Slider { + Layout.fillWidth: true + Kirigami.FormData.label: "QQC2 slider" + to: slider.to + stepSize: slider.stepSize + } + Slider { + id: slider + Kirigami.FormData.label: "PC3 slider" + to: max.text + stepSize: 1 + clip: true + } + TextField { + id: max + Kirigami.FormData.label: "maximumValue: " + text: "100" + } + Label { + Kirigami.FormData.label: "value: " + text: slider.value + } + Slider { + Kirigami.FormData.label: "Choose step size: " + to: slider.to * 2 + onMoved: slider.stepSize = value + } + Label { + Kirigami.FormData.label: "Step size: " + text: slider.stepSize + } + } + } +}