Warning, /plasma/qqc2-breeze-style/style/impl/MenuItemBackground.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 Loader { 0012 id: root 0013 property T.MenuItem control: root.parent 0014 // God, this code is ugly. Somehow this works, but `control.ListView.view && control.ListView.view.highlight` doesn't. 0015 property bool isInListView: control.ListView.view ?? false 0016 property bool listViewHasHighlight: isInListView && (control.ListView.view.highlight ?? false) 0017 0018 property color normalColor: control instanceof T.SwipeDelegate ? Kirigami.Theme.backgroundColor 0019 : Qt.rgba( 0020 Kirigami.Theme.backgroundColor.r, 0021 Kirigami.Theme.backgroundColor.g, 0022 Kirigami.Theme.backgroundColor.b, 0023 0 0024 ) 0025 property bool highlightBackground: control.down || control.highlighted 0026 0027 // Rectangle compatibility properties. 3rd party devs might assume that these properties are available. 0028 property color color: { 0029 if (highlightBackground) { 0030 return Kirigami.Theme.alternateBackgroundColor 0031 } else { 0032 return normalColor 0033 } 0034 } 0035 property real radius: Impl.Units.smallRadius 0036 property QtObject border: QtObject { 0037 property real width: highlightBackground ? Impl.Units.smallBorder : 0 0038 property color color: Kirigami.Theme.focusColor 0039 } 0040 0041 property bool backgroundAnimationRunning: false 0042 property bool borderAnimationRunning: false 0043 0044 visible: (highlightBackground || backgroundAnimationRunning || borderAnimationRunning) && !listViewHasHighlight 0045 active: visible 0046 sourceComponent: Component { 0047 Kirigami.ShadowedRectangle { 0048 id: mainBackground 0049 readonly property bool isCurrentItem: root.isInListView && control.ListView.isCurrentItem 0050 readonly property int currentIndex: root.isInListView ? control.ListView.view.currentIndex : 0 0051 // readonly property int count: root.isInListView ? control.ListView.view.count : 0 0052 readonly property bool horizontalListView: root.isInListView && control.ListView.view.orientation === ListView.Horizontal 0053 0054 implicitHeight: Impl.Units.mediumControlHeight 0055 0056 radius: root.radius 0057 readonly property real topRadius: !root.isInListView || (isCurrentItem && currentIndex == 0) ? radius : 0 0058 readonly property real bottomRadius: !root.isInListView || (isCurrentItem && currentIndex == control.ListView.view.count-1) ? radius : 0 0059 0060 corners { 0061 topLeftRadius: topRadius 0062 topRightRadius: topRadius 0063 bottomLeftRadius: bottomRadius 0064 bottomRightRadius: bottomRadius 0065 } 0066 0067 color: root.color 0068 0069 border { 0070 width: root.border.width 0071 color: root.border.color 0072 } 0073 0074 Behavior on color { 0075 enabled: highlightBackground 0076 ColorAnimation { 0077 duration: Kirigami.Units.shortDuration 0078 easing.type: Easing.OutCubic 0079 onRunningChanged: root.backgroundAnimationRunning = running 0080 } 0081 } 0082 Behavior on border.color { 0083 enabled: highlightBackground 0084 ColorAnimation { 0085 duration: Kirigami.Units.shortDuration 0086 easing.type: Easing.OutCubic 0087 onRunningChanged: root.borderAnimationRunning = running 0088 } 0089 } 0090 } 0091 } 0092 } 0093