Warning, /sdk/licensedigger/autotests/testdata/LGPL-3.0-only_OR_GPL-2.0-or-later/ScrollView.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 * Copyright 2017 Marco Martin <mart@kde.org>
0003 * Copyright 2017 The Qt Company Ltd.
0004 *
0005 * GNU Lesser General Public License Usage
0006 * Alternatively, this file may be used under the terms of the GNU Lesser
0007 * General Public License version 3 as published by the Free Software
0008 * Foundation and appearing in the file LICENSE.LGPLv3 included in the
0009 * packaging of this file. Please review the following information to
0010 * ensure the GNU Lesser General Public License version 3 requirements
0011 * will be met: https://www.gnu.org/licenses/lgpl.html.
0012 *
0013 * GNU General Public License Usage
0014 * Alternatively, this file may be used under the terms of the GNU
0015 * General Public License version 2.0 or later as published by the Free
0016 * Software Foundation and appearing in the file LICENSE.GPL included in
0017 * the packaging of this file. Please review the following information to
0018 * ensure the GNU General Public License version 2.0 requirements will be
0019 * met: http://www.gnu.org/licenses/gpl-2.0.html.
0020 */
0021
0022
0023 import QtQuick 2.9
0024 import QtQuick.Controls @QQC2_VERSION@
0025 import QtQuick.Templates @QQC2_VERSION@ as T
0026 import org.kde.kirigami 2.9 as Kirigami
0027 import org.kde.qqc2desktopstyle.private 1.0 as StylePrivate
0028
0029 T.ScrollView {
0030 id: controlRoot
0031
0032 clip: true
0033
0034 @DISABLE_UNDER_QQC2_2_4@ palette: Kirigami.Theme.palette
0035 implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
0036 implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
0037
0038 Kirigami.Theme.colorSet: Kirigami.Theme.View
0039 Kirigami.Theme.inherit: !background || !background.visible
0040
0041 //size in pixel to accomodate the border drawn by qstyle
0042 leftPadding: background && background.visible && background.hasOwnProperty("leftPadding") ? background.leftPadding : 0
0043 topPadding: background && background.visible && background.hasOwnProperty("topPadding") ? background.topPadding : 0
0044 rightPadding: background && background.visible && background.hasOwnProperty("rightPadding") ? background.rightPadding : 0
0045 bottomPadding: background && background.visible && background.hasOwnProperty("bottomPadding") ? background.bottomPadding : 0
0046
0047 //create a background only after Component.onCompleted, see on the component creation below for explanation
0048 Component.onCompleted: {
0049 if (!controlRoot.background) {
0050 controlRoot.background = backgroundComponent.createObject(controlRoot);
0051 }
0052 }
0053
0054 data: [
0055 Kirigami.WheelHandler {
0056 target: controlRoot.contentItem
0057 },
0058 /*create a background only after Component.onCompleted because:
0059 * implementations can set their own background in a declarative way
0060 * ScrollView {background.visible: true} must *not* work, because all upstream styles don't have a background so applications using this would break with other styles
0061 * This is child of scrollHelper as it would break native scrollview finding of the flickable if it was a direct child
0062 */
0063 Component {
0064 id: backgroundComponent
0065 StylePrivate.StyleItem {
0066 control: controlRoot.contentItem
0067 elementType: "edit"
0068 property int leftPadding: frame.leftPadding
0069 property int topPadding: frame.topPadding
0070 property int rightPadding: frame.rightPadding
0071 property int bottomPadding: frame.bottomPadding
0072 visible: false
0073 sunken: true
0074 raised: false
0075 enabled: controlRoot.contentItem.enabled
0076 hasFocus: controlRoot.activeFocus || controlRoot.contentItem.activeFocus
0077 hover: controlRoot.hovered
0078 //This is just for the proper margin metrics
0079 StylePrivate.StyleItem {
0080 id: frame
0081 anchors.fill:parent
0082 control: controlRoot
0083 elementType: "frame"
0084 visible: false
0085 sunken: true
0086 hasFocus: controlRoot.activeFocus || controlRoot.contentItem.activeFocus
0087 hover: controlRoot.hovered
0088 }
0089 }
0090 }
0091 ]
0092 ScrollBar.vertical: ScrollBar {
0093 id: verticalScrollBar
0094 parent: controlRoot
0095 enabled: controlRoot.contentItem.enabled
0096 x: controlRoot.mirrored ? 0 : controlRoot.width - width
0097 y: controlRoot.topPadding
0098 height: controlRoot.availableHeight
0099 active: controlRoot.ScrollBar.horizontal || controlRoot.ScrollBar.horizontal.active
0100 }
0101
0102 ScrollBar.horizontal: ScrollBar {
0103 parent: controlRoot
0104 enabled: controlRoot.contentItem.enabled
0105 x: controlRoot.leftPadding
0106 y: controlRoot.height - height
0107 width: controlRoot.availableWidth
0108 active: controlRoot.ScrollBar.vertical || controlRoot.ScrollBar.vertical.active
0109 }
0110 }