Warning, /frameworks/qqc2-desktop-style/org.kde.desktop/private/DefaultSliderHandle.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2023 ivan tkachenko <me@ratijas.tk>
0003
0004 SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later
0005 */
0006
0007 import QtQuick
0008 import QtQuick.Templates as T
0009 import org.kde.qqc2desktopstyle.private as StylePrivate
0010
0011 Item {
0012 id: handle
0013
0014 required property T.Slider control
0015
0016 readonly property StylePrivate.StyleItem styleItem: {
0017 const item = control.background;
0018 return (item instanceof StylePrivate.StyleItem) ? item : null;
0019 }
0020
0021 // It won't keep track of an actual position, but QtQuick.Templates code
0022 // only accounts for handle size and does not care for x/y anyway.
0023 property size size
0024
0025 function updateHandleSize() {
0026 if (styleItem) {
0027 const rect = styleItem.subControlRect("handle");
0028 size = Qt.size(rect.width, rect.height);
0029 }
0030 }
0031
0032 x: control.leftPadding + Math.round(control.horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2)
0033 y: control.topPadding + Math.round(control.horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height))
0034
0035 implicitWidth: size.width
0036 implicitHeight: size.height
0037
0038 Connections {
0039 target: handle.styleItem
0040
0041 function onStyleNameChanged() {
0042 handle.updateHandleSize();
0043 }
0044 }
0045
0046 Component.onCompleted: {
0047 updateHandleSize();
0048 }
0049 }