Warning, /frameworks/qqc2-desktop-style/org.kde.desktop/Slider.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2017 Marco Martin <mart@kde.org> 0003 SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 0004 SPDX-FileCopyrightText: 2023 ivan tkachenko <me@ratijas.tk> 0005 0006 SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 0007 */ 0008 0009 import QtQuick 0010 import QtQuick.Templates as T 0011 import org.kde.kirigami as Kirigami 0012 import org.kde.desktop.private as Private 0013 import org.kde.qqc2desktopstyle.private as StylePrivate 0014 0015 T.Slider { 0016 id: controlRoot 0017 0018 Kirigami.Theme.colorSet: Kirigami.Theme.Button 0019 0020 implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 0021 implicitContentWidth + leftPadding + rightPadding) 0022 implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 0023 implicitContentHeight + topPadding + bottomPadding) 0024 0025 hoverEnabled: true 0026 0027 handle: Private.DefaultSliderHandle { 0028 control: controlRoot 0029 } 0030 0031 snapMode: T.Slider.SnapOnRelease 0032 0033 background: StylePrivate.StyleItem { 0034 control: controlRoot 0035 elementType: "slider" 0036 sunken: controlRoot.pressed 0037 0038 minimum: 0 0039 maximum: 100000 0040 step: 100000 * (controlRoot.stepSize / (controlRoot.to - controlRoot.from)) 0041 value: 100000 * position 0042 0043 horizontal: controlRoot.orientation === Qt.Horizontal 0044 enabled: controlRoot.enabled 0045 hasFocus: controlRoot.activeFocus 0046 hover: controlRoot.hovered 0047 activeControl: controlRoot.stepSize > 0 ? "ticks" : "" 0048 0049 // `wheelEnabled: true` doesn't work since it doesn't snap to tickmarks, 0050 // so we have to implement the scroll handling ourselves. See 0051 // https://bugreports.qt.io/browse/QTBUG-93081 0052 MouseArea { 0053 property int wheelDelta: 0 0054 0055 anchors { 0056 fill: parent 0057 leftMargin: controlRoot.leftPadding 0058 rightMargin: controlRoot.rightPadding 0059 } 0060 LayoutMirroring.enabled: false 0061 0062 acceptedButtons: Qt.NoButton 0063 0064 onWheel: wheel => { 0065 const lastValue = controlRoot.value 0066 // We want a positive delta to increase the slider for up/right scrolling, 0067 // independently of the scrolling inversion setting 0068 // The x-axis is also inverted (scrolling right produce negative values) 0069 const delta = (wheel.angleDelta.y || -wheel.angleDelta.x) * (wheel.inverted ? -1 : 1) 0070 wheelDelta += delta; 0071 // magic number 120 for common "one click" 0072 // See: https://doc.qt.io/qt-5/qml-qtquick-wheelevent.html#angleDelta-prop 0073 while (wheelDelta >= 120) { 0074 wheelDelta -= 120; 0075 controlRoot.increase(); 0076 } 0077 while (wheelDelta <= -120) { 0078 wheelDelta += 120; 0079 controlRoot.decrease(); 0080 } 0081 if (lastValue !== controlRoot.value) { 0082 controlRoot.moved(); 0083 } 0084 } 0085 } 0086 } 0087 }