Warning, /plasma/qqc2-breeze-style/style/impl/DelegateBackground.qml is written in an unsupported language. File is not indexed.

0001 /* SPDX-FileCopyrightText: 2020 Noah Davis <noahadvs@gmail.com>
0002  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0003  */
0004 
0005 import QtQuick
0006 import QtQuick.Templates as T
0007 import org.kde.kirigami as Kirigami
0008 
0009 import "." as Impl
0010 
0011 Rectangle {
0012     id: root
0013     property T.ItemDelegate control: root.parent
0014 
0015     readonly property bool highlight: control.highlighted || control.down
0016     readonly property bool useAlternatingColors: {
0017         if (control.TableView.view?.alternatingRows && row % 2) {
0018             return true
0019         } else if (control.Kirigami.Theme.useAlternateBackgroundColor && index % 2) {
0020             return true
0021         }
0022         return false
0023     }
0024 
0025     readonly property color hoverColor: Qt.alpha(Kirigami.Theme.hoverColor, 0.3)
0026     readonly property color highlightColor: Kirigami.Theme.highlightColor
0027     readonly property color normalColor: useAlternatingColors ? Kirigami.Theme.alternateBackgroundColor : Kirigami.Theme.backgroundColor
0028     // Workaround for QTBUG-113304
0029     readonly property bool reallyFocus: control.visualFocus || (control.activeFocus && control.focusReason === Qt.OtherFocusReason)
0030 
0031     property real horizontalPadding: Kirigami.Units.smallSpacing
0032     property real verticalPadding: Kirigami.Units.smallSpacing
0033     property real cornerRadius: 3
0034 
0035     color: normalColor
0036 
0037     Rectangle {
0038         anchors {
0039             fill: parent
0040             leftMargin: background.horizontalPadding
0041             rightMargin: background.horizontalPadding
0042             // We want total spacing between consecutive list items to be
0043             // verticalPadding. So use half that as top/bottom margin, separately
0044             // ceiling/flooring them so that the total spacing is preserved.
0045             topMargin: Math.ceil(root.verticalPadding / 2)
0046             bottomMargin: Math.floor(root.verticalPadding / 2)
0047         }
0048 
0049         radius: root.cornerRadius
0050 
0051         color: {
0052             if (root.highlight) {
0053                 return root.highlightColor
0054             } else {
0055                 return (root.control.hovered || root.reallyFocus) ? root.hoverColor : root.normalColor
0056             }
0057         }
0058 
0059         border.width: 1
0060         border.color: {
0061             if (root.highlight) {
0062                 return root.highlightColor
0063             } else {
0064                 return (root.control.hovered || root.reallyFocus) ? Kirigami.Theme.hoverColor : "transparent"
0065             }
0066         }
0067     }
0068 }
0069