File 2000-listsectionheader.patch of Package kf6-kirigami
diff --git a/src/controls/ListSectionHeader.qml b/src/controls/ListSectionHeader.qml
index eaa2d42fe469aa4a57a996c45d0668cc804f3e26..67254b01a5e59ee98c0f7346ccccb6b583e154fd 100644
--- a/src/controls/ListSectionHeader.qml
+++ b/src/controls/ListSectionHeader.qml
@@ -48,7 +48,7 @@ QQC2.ItemDelegate {
@Deprecated { reason: "Use base type's AbstractButton::text property directly" }
property alias label: listSection.text
- default property alias _contents: rowLayout.data
+ default property alias _contents: trailingContent.data
hoverEnabled: false
@@ -59,13 +59,29 @@ QQC2.ItemDelegate {
topPadding: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing
+ implicitWidth: {
+ let implicitWidth = Kirigami.Units.gridUnit * 12;
+ if (contentItem) {
+ implicitWidth = leftPadding + rightPadding;
+ if (contentItem === rowLayout) {
+ implicitWidth += Math.ceil(heading.implicitWidth);
+ if (trailingContent.visible) {
+ implicitWidth += rowLayout.spacing + trailingContent.implicitWidth;
+ }
+ } else {
+ implicitWidth += contentItem.implicitWidth;
+ }
+ }
+ return implicitWidth;
+ }
+
contentItem: RowLayout {
id: rowLayout
spacing: Kirigami.Units.largeSpacing
Kirigami.Heading {
- Layout.maximumWidth: rowLayout.width
- Layout.alignment: Qt.AlignVCenter
+ id: heading
+ Layout.fillWidth: !separator.visible
opacity: 0.7
level: 5
@@ -80,9 +96,22 @@ QQC2.ItemDelegate {
}
Kirigami.Separator {
+ id: separator
+ Layout.minimumWidth: Kirigami.Units.gridUnit
Layout.fillWidth: true
- Layout.alignment: Qt.AlignVCenter
Accessible.ignored: true
+ visible: {
+ let availableHeadingWidth = rowLayout.width - separator.Layout.minimumWidth - rowLayout.spacing;
+ if (trailingContent.visible) {
+ availableHeadingWidth -= trailingContent.width + rowLayout.spacing;
+ }
+ return availableHeadingWidth >= heading.implicitWidth;
+ }
+ }
+
+ RowLayout {
+ id: trailingContent
+ visible: visibleChildren.length > 0
}
}
}