Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:epopov:branches:openSUSE:Factory
kirigami2
2000-listsectionheader.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 2000-listsectionheader.patch of Package kirigami2
diff --git a/src/controls/ListSectionHeader.qml b/src/controls/ListSectionHeader.qml index 8b65a8bcf9833214a0706ca82f9e191cb16e13de..0787829849cc0c0a708d955207ccb1e1593fd315 100644 --- a/src/controls/ListSectionHeader.qml +++ b/src/controls/ListSectionHeader.qml @@ -48,7 +48,7 @@ Kirigami.AbstractListItem { property alias label: listSection.text /** @internal */ - default property alias _contents: rowLayout.data + default property alias _contents: trailingContent.data separatorVisible: false sectionDelegate: true @@ -61,13 +61,29 @@ Kirigami.AbstractListItem { 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.fillWidth: rowLayout.children.length === 1 - Layout.alignment: Qt.AlignVCenter + id: heading + Layout.fillWidth: !separator.visible opacity: 0.7 level: 5 @@ -80,8 +96,21 @@ Kirigami.AbstractListItem { } Kirigami.Separator { + id: separator + Layout.minimumWidth: Kirigami.Units.gridUnit Layout.fillWidth: true - Layout.alignment: Qt.AlignVCenter + 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 } } }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor