Warning, /frameworks/qqc2-desktop-style/org.kde.desktop/private/DefaultListItemBackground.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
0010 import QtQuick
0011 import QtQuick.Templates as T
0012 import org.kde.kirigami as Kirigami
0013
0014 Rectangle {
0015 id: background
0016
0017 property T.ItemDelegate control
0018
0019 readonly property bool highlight: control.highlighted || control.down
0020 readonly property bool useAlternatingColors: {
0021 if (control.TableView.view?.alternatingRows && row % 2) {
0022 return true
0023 } else if (control.Kirigami.Theme.useAlternateBackgroundColor && index % 2) {
0024 return true
0025 }
0026 return false
0027 }
0028
0029 readonly property color hoverColor: Qt.alpha(Kirigami.Theme.hoverColor, 0.3)
0030 readonly property color highlightColor: Kirigami.Theme.highlightColor
0031 readonly property color normalColor: useAlternatingColors ? Kirigami.Theme.alternateBackgroundColor : "transparent"
0032 // Workaround for QTBUG-113304
0033 readonly property bool reallyFocus: control.visualFocus || (control.activeFocus && control.focusReason === Qt.OtherFocusReason)
0034
0035 property real horizontalPadding: control.TableView.view ? 0 : Kirigami.Units.smallSpacing
0036 property real verticalPadding: control.TableView.view ? 0 : Kirigami.Units.smallSpacing
0037 property real cornerRadius: control.TableView.view ? 0 : 3
0038
0039 color: normalColor
0040
0041 Rectangle {
0042 anchors {
0043 fill: parent
0044 leftMargin: background.horizontalPadding
0045 rightMargin: background.horizontalPadding
0046 // We want total spacing between consecutive list items to be
0047 // verticalPadding. So use half that as top/bottom margin, separately
0048 // ceiling/flooring them so that the total spacing is preserved.
0049 topMargin: Math.ceil(background.verticalPadding / 2)
0050 bottomMargin: Math.floor(background.verticalPadding / 2)
0051 }
0052
0053 radius: background.cornerRadius
0054
0055 color: {
0056 if (background.highlight) {
0057 return background.highlightColor
0058 } else {
0059 return (background.control.hovered || background.reallyFocus) ? background.hoverColor : background.normalColor
0060 }
0061 }
0062
0063 border.width: 1
0064 border.color: {
0065 if (background.highlight) {
0066 return background.highlightColor
0067 } else {
0068 return (background.control.hovered || background.reallyFocus) ? Kirigami.Theme.hoverColor : "transparent"
0069 }
0070 }
0071 }
0072 }