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
         }
     }
 }
openSUSE Build Service is sponsored by