Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kf6-qqc2-desktop-style for openSUSE:Factory checked in at 2025-05-12 16:45:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kf6-qqc2-desktop-style (Old) and /work/SRC/openSUSE:Factory/.kf6-qqc2-desktop-style.new.30101 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kf6-qqc2-desktop-style" Mon May 12 16:45:05 2025 rev:16 rq:1276411 version:6.14.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kf6-qqc2-desktop-style/kf6-qqc2-desktop-style.changes 2025-04-15 16:47:14.222448127 +0200 +++ /work/SRC/openSUSE:Factory/.kf6-qqc2-desktop-style.new.30101/kf6-qqc2-desktop-style.changes 2025-05-12 16:48:05.730697727 +0200 @@ -1,0 +2,13 @@ +Sun May 4 19:05:34 UTC 2025 - Christophe Marin <christo...@krop.fr> + +- Update to 6.14.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/frameworks/6/6.14.0 +- Changes since 6.13.0: + * Update dependency version to 6.14.0 + * Get platform fonts with Qt APIs instead of DBus and KConfig + * Support display property for delegates + * Update version to 6.14.0 + +------------------------------------------------------------------- Old: ---- qqc2-desktop-style-6.13.0.tar.xz qqc2-desktop-style-6.13.0.tar.xz.sig New: ---- qqc2-desktop-style-6.14.0.tar.xz qqc2-desktop-style-6.14.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kf6-qqc2-desktop-style.spec ++++++ --- /var/tmp/diff_new_pack.MpsD3d/_old 2025-05-12 16:48:06.254719699 +0200 +++ /var/tmp/diff_new_pack.MpsD3d/_new 2025-05-12 16:48:06.258719867 +0200 @@ -19,13 +19,13 @@ %define qt6_version 6.7.0 %define rname qqc2-desktop-style -# Full KF6 version (e.g. 6.13.0) +# Full KF6 version (e.g. 6.14.0) %{!?_kf6_version: %global _kf6_version %{version}} # Last major and minor KF6 version (e.g. 6.0) %{!?_kf6_bugfix_version: %define _kf6_bugfix_version %(echo %{_kf6_version} | awk -F. '{print $1"."$2}')} %bcond_without released Name: kf6-qqc2-desktop-style -Version: 6.13.0 +Version: 6.14.0 Release: 0 Summary: A Qt Quick Controls 2 Style for Desktop UIs License: GPL-2.0-or-later ++++++ qqc2-desktop-style-6.13.0.tar.xz -> qqc2-desktop-style-6.14.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qqc2-desktop-style-6.13.0/CMakeLists.txt new/qqc2-desktop-style-6.14.0/CMakeLists.txt --- old/qqc2-desktop-style-6.13.0/CMakeLists.txt 2025-04-04 16:04:17.000000000 +0200 +++ new/qqc2-desktop-style-6.14.0/CMakeLists.txt 2025-05-02 16:26:46.000000000 +0200 @@ -1,13 +1,13 @@ cmake_minimum_required(VERSION 3.16) -set(KF_VERSION "6.13.0") # handled by release scripts -set(KF_DEP_VERSION "6.13.0") # handled by release scripts +set(KF_VERSION "6.14.0") # handled by release scripts +set(KF_DEP_VERSION "6.14.0") # handled by release scripts project(qqc2-desktop-style VERSION ${KF_VERSION}) -set(REQUIRED_QT_VERSION 6.6.0) +set(REQUIRED_QT_VERSION 6.7.0) -find_package(ECM 6.13.0 REQUIRED NO_MODULE) +find_package(ECM 6.14.0 REQUIRED NO_MODULE) # where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qqc2-desktop-style-6.13.0/kirigami-plasmadesktop-integration/plasmadesktoptheme.cpp new/qqc2-desktop-style-6.14.0/kirigami-plasmadesktop-integration/plasmadesktoptheme.cpp --- old/qqc2-desktop-style-6.13.0/kirigami-plasmadesktop-integration/plasmadesktoptheme.cpp 2025-04-04 16:04:17.000000000 +0200 +++ new/qqc2-desktop-style-6.14.0/kirigami-plasmadesktop-integration/plasmadesktoptheme.cpp 2025-05-02 16:26:46.000000000 +0200 @@ -10,6 +10,7 @@ #include <QDBusConnection> #endif +#include <QFontDatabase> #include <QGuiApplication> #include <QPalette> #include <QQuickRenderControl> @@ -59,25 +60,6 @@ } else { QQuickWindow::setTextRenderType(QQuickWindow::QtTextRendering); } - smallFont = loadSmallFont(); - } - - QFont loadSmallFont() const - { - KSharedConfigPtr ptr = KSharedConfig::openConfig(); - KConfigGroup general(ptr->group(QStringLiteral("General"))); - - return general.readEntry("smallestReadableFont", []() { - auto smallFont = qApp->font(); -#ifndef Q_OS_WIN - if (smallFont.pixelSize() != -1) { - smallFont.setPixelSize(smallFont.pixelSize() - 2); - } else { - smallFont.setPointSize(smallFont.pointSize() - 2); - } -#endif - return smallFont; - }()); } void refresh() @@ -164,16 +146,15 @@ Q_SLOT void notifyWatchersConfigurationChange() { - smallFont = loadSmallFont(); for (auto watcher : std::as_const(watchers)) { - watcher->setSmallFont(smallFont); watcher->setDefaultFont(qApp->font()); + watcher->setSmallFont(QFontDatabase::systemFont(QFontDatabase::SmallestReadableFont)); + watcher->setFixedWidthFont(QFontDatabase::systemFont(QFontDatabase::FixedFont)); } } KColorScheme buttonScheme; KColorScheme viewScheme; - QFont smallFont; QList<PlasmaDesktopTheme *> watchers; @@ -214,7 +195,8 @@ s_style->watchers.append(this); setDefaultFont(qGuiApp->font()); - setSmallFont(s_style->smallFont); + setSmallFont(QFontDatabase::systemFont(QFontDatabase::SmallestReadableFont)); + setFixedWidthFont(QFontDatabase::systemFont(QFontDatabase::FixedFont)); syncWindow(); if (!m_window) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qqc2-desktop-style-6.13.0/org.kde.desktop/CheckDelegate.qml new/qqc2-desktop-style-6.14.0/org.kde.desktop/CheckDelegate.qml --- old/qqc2-desktop-style-6.13.0/org.kde.desktop/CheckDelegate.qml 2025-04-04 16:04:17.000000000 +0200 +++ new/qqc2-desktop-style-6.14.0/org.kde.desktop/CheckDelegate.qml 2025-05-02 16:26:46.000000000 +0200 @@ -2,6 +2,7 @@ SPDX-FileCopyrightText: 2017 Marco Martin <m...@kde.org> SPDX-FileCopyrightText: 2017 The Qt Company Ltd. SPDX-FileCopyrightText: 2023 ivan tkachenko <m...@ratijas.tk> + SPDX-FileCopyrightText: 2025 Nate Graham <n...@kde.org> SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later */ @@ -27,55 +28,64 @@ spacing: Kirigami.Units.smallSpacing padding: Kirigami.Settings.tabletMode ? Kirigami.Units.largeSpacing : Kirigami.Units.mediumSpacing horizontalPadding: Kirigami.Units.smallSpacing * 2 - leftPadding: !mirrored ? horizontalPadding + implicitIndicatorWidth + spacing : horizontalPadding - rightPadding: mirrored ? horizontalPadding + implicitIndicatorWidth + spacing : horizontalPadding + leftPadding: !mirrored ? horizontalPadding + (controlRoot.display === T.AbstractButton.TextUnderIcon ? 0 : implicitIndicatorWidth) + spacing : horizontalPadding + rightPadding: mirrored ? horizontalPadding + (controlRoot.display === T.AbstractButton.TextUnderIcon ? 0 : implicitIndicatorWidth) + spacing : horizontalPadding - icon.width: Kirigami.Units.iconSizes.smallMedium - icon.height: Kirigami.Units.iconSizes.smallMedium + readonly property int __iconSize: controlRoot.display === T.AbstractButton.TextUnderIcon ? Kirigami.Units.iconSizes.medium : Kirigami.Units.iconSizes.smallMedium + icon.width: __iconSize + icon.height:__iconSize - T.ToolTip.visible: (Kirigami.Settings.tabletMode ? down : hovered) && (contentItem.truncated ?? false) + T.ToolTip.visible: (Kirigami.Settings.tabletMode ? down : hovered) && (textLabel.truncated ?? false) T.ToolTip.text: text T.ToolTip.delay: Kirigami.Units.toolTipDelay leftInset: TableView.view ? 0 : horizontalPadding / 2 rightInset: TableView.view ? 0 : horizontalPadding / 2 + // We want total spacing between consecutive list items to be + // verticalPadding. So use half that as top/bottom margin, separately + // ceiling/flooring them so that the total spacing is preserved. topInset: TableView.view ? 0 : Math.ceil(verticalPadding / 2) bottomInset: TableView.view ? 0 : Math.ceil(verticalPadding / 2) - contentItem: RowLayout { + contentItem: GridLayout { LayoutMirroring.enabled: controlRoot.mirrored - spacing: controlRoot.spacing + rows: controlRoot.display === T.AbstractButton.TextUnderIcon ? 2 : 1 + columns: controlRoot.display === T.AbstractButton.TextBesideIcon ? 2 : 1 + rowSpacing: controlRoot.spacing + columnSpacing: controlRoot.spacing property alias truncated: textLabel.truncated Kirigami.Icon { - Layout.alignment: Qt.AlignVCenter - visible: controlRoot.icon.name !== "" || controlRoot.icon.source.toString() !== "" - source: controlRoot.icon.name !== "" ? controlRoot.icon.name : controlRoot.icon.source Layout.preferredHeight: controlRoot.icon.height Layout.preferredWidth: controlRoot.icon.width + Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter + visible: controlRoot.display !== T.AbstractButton.TextOnly + && (controlRoot.icon.name !== "" || controlRoot.icon.source.toString() !== "") + source: controlRoot.icon.name !== "" ? controlRoot.icon.name : controlRoot.icon.source } Label { id: textLabel - Layout.alignment: Qt.AlignLeft Layout.fillWidth: true + Layout.fillHeight: true text: controlRoot.text font: controlRoot.font color: (((controlRoot.pressed && !controlRoot.checked) || controlRoot.highlighted) && !controlRoot.sectionDelegate) ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor elide: Text.ElideRight - visible: controlRoot.text - horizontalAlignment: Text.AlignLeft - verticalAlignment: Text.AlignVCenter + visible: controlRoot.display !== T.AbstractButton.IconOnly && controlRoot.text + wrapMode: controlRoot.display === T.AbstractButton.TextUnderIcon ? Text.Wrap : Text.NoWrap + horizontalAlignment: controlRoot.display === T.AbstractButton.TextUnderIcon ? Text.AlignHCenter : Text.AlignLeft + verticalAlignment: controlRoot.display === T.AbstractButton.TextUnderIcon ? Text.AlignTop : Text.AlignVCenter } } indicator: Private.CheckIndicator { elementType: "checkbox" x: !controlRoot.mirrored ? controlRoot.horizontalPadding : controlRoot.width - width - controlRoot.horizontalPadding - y: controlRoot.topPadding + (controlRoot.availableHeight - height) / 2 + y: controlRoot.topPadding + (controlRoot.display === T.AbstractButton.TextUnderIcon ? 0 : ((controlRoot.availableHeight - height) / 2) ) control: controlRoot drawIcon: false diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qqc2-desktop-style-6.13.0/org.kde.desktop/ItemDelegate.qml new/qqc2-desktop-style-6.14.0/org.kde.desktop/ItemDelegate.qml --- old/qqc2-desktop-style-6.13.0/org.kde.desktop/ItemDelegate.qml 2025-04-04 16:04:17.000000000 +0200 +++ new/qqc2-desktop-style-6.14.0/org.kde.desktop/ItemDelegate.qml 2025-05-02 16:26:46.000000000 +0200 @@ -2,10 +2,12 @@ SPDX-FileCopyrightText: 2017 Marco Martin <m...@kde.org> SPDX-FileCopyrightText: 2017 The Qt Company Ltd. SPDX-FileCopyrightText: 2023 ivan tkachenko <m...@ratijas.tk> + SPDX-FileCopyrightText: 2025 Nate Graham <n...@kde.org> SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later */ + import QtQuick import QtQuick.Layouts import QtQuick.Templates as T @@ -26,13 +28,14 @@ spacing: Kirigami.Units.smallSpacing padding: Kirigami.Settings.tabletMode ? Kirigami.Units.largeSpacing : Kirigami.Units.mediumSpacing horizontalPadding: Kirigami.Units.smallSpacing * 2 - leftPadding: !mirrored ? horizontalPadding + (indicator ? implicitIndicatorWidth + spacing : 0) : horizontalPadding - rightPadding: mirrored ? horizontalPadding + (indicator ? implicitIndicatorWidth + spacing : 0) : horizontalPadding + leftPadding: !mirrored ? horizontalPadding + (indicator ? (controlRoot.display === T.AbstractButton.TextUnderIcon ? 0 : implicitIndicatorWidth) + spacing : 0) : horizontalPadding + rightPadding: mirrored ? horizontalPadding + (indicator ? (controlRoot.display === T.AbstractButton.TextUnderIcon ? 0 : implicitIndicatorWidth) + spacing : 0) : horizontalPadding - icon.width: Kirigami.Units.iconSizes.smallMedium - icon.height: Kirigami.Units.iconSizes.smallMedium + readonly property int __iconSize: controlRoot.display === T.AbstractButton.TextUnderIcon ? Kirigami.Units.iconSizes.medium : Kirigami.Units.iconSizes.smallMedium + icon.width: __iconSize + icon.height:__iconSize - T.ToolTip.visible: (Kirigami.Settings.tabletMode ? down : hovered) && (contentItem.truncated ?? false) + T.ToolTip.visible: (Kirigami.Settings.tabletMode ? down : hovered) && (textLabel.truncated ?? false) T.ToolTip.text: text T.ToolTip.delay: Kirigami.Units.toolTipDelay @@ -44,26 +47,30 @@ topInset: TableView.view ? 0 : Math.ceil(verticalPadding / 2) bottomInset: TableView.view ? 0 : Math.ceil(verticalPadding / 2) - contentItem: RowLayout { + contentItem: GridLayout { LayoutMirroring.enabled: controlRoot.mirrored - spacing: controlRoot.spacing + rows: controlRoot.display === T.AbstractButton.TextUnderIcon ? 2 : 1 + columns: controlRoot.display === T.AbstractButton.TextBesideIcon ? 2 : 1 + rowSpacing: controlRoot.spacing + columnSpacing: controlRoot.spacing property alias truncated: textLabel.truncated Kirigami.Icon { selected: controlRoot.highlighted || controlRoot.down - Layout.alignment: Qt.AlignVCenter - visible: controlRoot.icon.name.length > 0 || controlRoot.icon.source.toString().length > 0 - source: controlRoot.icon.name.length > 0 ? controlRoot.icon.name : controlRoot.icon.source Layout.preferredHeight: controlRoot.icon.height Layout.preferredWidth: controlRoot.icon.width + Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter + visible: controlRoot.display !== T.AbstractButton.TextOnly + && (controlRoot.icon.name.length > 0 || controlRoot.icon.source.toString().length > 0) + source: controlRoot.icon.name.length > 0 ? controlRoot.icon.name : controlRoot.icon.source } Label { id: textLabel - Layout.alignment: Qt.AlignLeft Layout.fillWidth: true + Layout.fillHeight: true text: controlRoot.text font: controlRoot.font @@ -72,9 +79,10 @@ : (controlRoot.enabled ? Kirigami.Theme.textColor : Kirigami.Theme.disabledTextColor) elide: Text.ElideRight - visible: controlRoot.text - horizontalAlignment: Text.AlignLeft - verticalAlignment: Text.AlignVCenter + visible: controlRoot.display !== T.AbstractButton.IconOnly && controlRoot.text + wrapMode: controlRoot.display === T.AbstractButton.TextUnderIcon ? Text.Wrap : Text.NoWrap + horizontalAlignment: controlRoot.display === T.AbstractButton.TextUnderIcon ? Text.AlignHCenter : Text.AlignLeft + verticalAlignment: controlRoot.display === T.AbstractButton.TextUnderIcon ? Text.AlignTop : Text.AlignVCenter } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qqc2-desktop-style-6.13.0/org.kde.desktop/RadioDelegate.qml new/qqc2-desktop-style-6.14.0/org.kde.desktop/RadioDelegate.qml --- old/qqc2-desktop-style-6.13.0/org.kde.desktop/RadioDelegate.qml 2025-04-04 16:04:17.000000000 +0200 +++ new/qqc2-desktop-style-6.14.0/org.kde.desktop/RadioDelegate.qml 2025-05-02 16:26:46.000000000 +0200 @@ -2,6 +2,7 @@ SPDX-FileCopyrightText: 2017 Marco Martin <m...@kde.org> SPDX-FileCopyrightText: 2017 The Qt Company Ltd. SPDX-FileCopyrightText: 2023 ivan tkachenko <m...@ratijas.tk> + SPDX-FileCopyrightText: 2025 Nate Graham <n...@kde.org> SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later */ @@ -27,55 +28,65 @@ spacing: Kirigami.Units.smallSpacing padding: Kirigami.Settings.tabletMode ? Kirigami.Units.largeSpacing : Kirigami.Units.mediumSpacing horizontalPadding: Kirigami.Units.smallSpacing * 2 - leftPadding: !mirrored ? horizontalPadding + implicitIndicatorWidth + spacing : horizontalPadding - rightPadding: mirrored ? horizontalPadding + implicitIndicatorWidth + spacing : horizontalPadding + leftPadding: !mirrored ? horizontalPadding + (controlRoot.display === T.AbstractButton.TextUnderIcon ? 0 : implicitIndicatorWidth) + spacing : horizontalPadding + rightPadding: mirrored ? horizontalPadding + (controlRoot.display === T.AbstractButton.TextUnderIcon ? 0 : implicitIndicatorWidth) + spacing : horizontalPadding - icon.width: Kirigami.Units.iconSizes.smallMedium - icon.height: Kirigami.Units.iconSizes.smallMedium + readonly property int __iconSize: controlRoot.display === T.AbstractButton.TextUnderIcon ? Kirigami.Units.iconSizes.medium : Kirigami.Units.iconSizes.smallMedium + icon.width: __iconSize + icon.height:__iconSize - T.ToolTip.visible: (Kirigami.Settings.tabletMode ? down : hovered) && (contentItem.truncated ?? false) + T.ToolTip.visible: (Kirigami.Settings.tabletMode ? down : hovered) && (textLabel.truncated ?? false) T.ToolTip.text: text T.ToolTip.delay: Kirigami.Units.toolTipDelay leftInset: TableView.view ? 0 : horizontalPadding / 2 rightInset: TableView.view ? 0 : horizontalPadding / 2 + // We want total spacing between consecutive list items to be + // verticalPadding. So use half that as top/bottom margin, separately + // ceiling/flooring them so that the total spacing is preserved. topInset: TableView.view ? 0 : Math.ceil(verticalPadding / 2) bottomInset: TableView.view ? 0 : Math.ceil(verticalPadding / 2) - contentItem: RowLayout { + contentItem: GridLayout { LayoutMirroring.enabled: controlRoot.mirrored - spacing: controlRoot.spacing + rows: controlRoot.display === T.AbstractButton.TextUnderIcon ? 2 : 1 + columns: controlRoot.display === T.AbstractButton.TextBesideIcon ? 2 : 1 + rowSpacing: controlRoot.spacing + columnSpacing: controlRoot.spacing property alias truncated: textLabel.truncated Kirigami.Icon { - Layout.alignment: Qt.AlignVCenter - visible: controlRoot.icon.name !== "" || controlRoot.icon.source.toString() !== "" - source: controlRoot.icon.name !== "" ? controlRoot.icon.name : controlRoot.icon.source Layout.preferredHeight: controlRoot.icon.height Layout.preferredWidth: controlRoot.icon.width + Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter + visible: controlRoot.display !== T.AbstractButton.TextOnly + && (controlRoot.icon.name !== "" || controlRoot.icon.source.toString() !== "") + source: controlRoot.icon.name !== "" ? controlRoot.icon.name : controlRoot.icon.source } Label { id: textLabel - Layout.alignment: Qt.AlignLeft Layout.fillWidth: true + Layout.fillHeight: true text: controlRoot.text font: controlRoot.font color: (controlRoot.pressed && !controlRoot.checked && !controlRoot.sectionDelegate) ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor elide: Text.ElideRight - visible: controlRoot.text - horizontalAlignment: Text.AlignLeft - verticalAlignment: Text.AlignVCenter + visible: controlRoot.display !== T.AbstractButton.IconOnly && controlRoot.text + wrapMode: controlRoot.display === T.AbstractButton.TextUnderIcon ? Text.Wrap : Text.NoWrap + horizontalAlignment: controlRoot.display === T.AbstractButton.TextUnderIcon ? Text.AlignHCenter : Text.AlignLeft + verticalAlignment: controlRoot.display === T.AbstractButton.TextUnderIcon ? Text.AlignTop : Text.AlignVCenter } } indicator: Private.CheckIndicator { elementType: "radiobutton" x: !controlRoot.mirrored ? controlRoot.horizontalPadding : controlRoot.width - width - controlRoot.horizontalPadding - y: controlRoot.topPadding + (controlRoot.availableHeight - height) / 2 + y: controlRoot.topPadding + (controlRoot.display === T.AbstractButton.TextUnderIcon ? 0 : ((controlRoot.availableHeight - height) / 2) ) + control: controlRoot drawIcon: false } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qqc2-desktop-style-6.13.0/org.kde.desktop/SwitchDelegate.qml new/qqc2-desktop-style-6.14.0/org.kde.desktop/SwitchDelegate.qml --- old/qqc2-desktop-style-6.13.0/org.kde.desktop/SwitchDelegate.qml 2025-04-04 16:04:17.000000000 +0200 +++ new/qqc2-desktop-style-6.14.0/org.kde.desktop/SwitchDelegate.qml 2025-05-02 16:26:46.000000000 +0200 @@ -1,6 +1,7 @@ /* SPDX-FileCopyrightText: 2017 Marco Martin <m...@kde.org> SPDX-FileCopyrightText: 2017 The Qt Company Ltd. + SPDX-FileCopyrightText: 2025 Nate Graham <n...@kde.org> SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later */ @@ -26,33 +27,41 @@ spacing: Kirigami.Units.smallSpacing padding: Kirigami.Settings.tabletMode ? Kirigami.Units.largeSpacing : Kirigami.Units.mediumSpacing horizontalPadding: Kirigami.Units.smallSpacing * 2 - leftPadding: !mirrored ? horizontalPadding + implicitIndicatorWidth + spacing : horizontalPadding - rightPadding: mirrored ? horizontalPadding + implicitIndicatorWidth + spacing : horizontalPadding + leftPadding: !mirrored ? horizontalPadding + (controlRoot.display === T.AbstractButton.TextUnderIcon ? 0 : implicitIndicatorWidth) + spacing : horizontalPadding + rightPadding: mirrored ? horizontalPadding + (controlRoot.display === T.AbstractButton.TextUnderIcon ? 0 : implicitIndicatorWidth) + spacing : horizontalPadding - icon.width: Kirigami.Units.iconSizes.smallMedium - icon.height: Kirigami.Units.iconSizes.smallMedium + readonly property int __iconSize: controlRoot.display === T.AbstractButton.TextUnderIcon ? Kirigami.Units.iconSizes.medium : Kirigami.Units.iconSizes.smallMedium + icon.width: __iconSize + icon.height:__iconSize - T.ToolTip.visible: (Kirigami.Settings.tabletMode ? down : hovered) && (contentItem.truncated ?? false) + T.ToolTip.visible: (Kirigami.Settings.tabletMode ? down : hovered) && (textLabel.truncated ?? false) T.ToolTip.text: text T.ToolTip.delay: Kirigami.Units.toolTipDelay leftInset: TableView.view ? 0 : horizontalPadding / 2 rightInset: TableView.view ? 0 : horizontalPadding / 2 + // We want total spacing between consecutive list items to be + // verticalPadding. So use half that as top/bottom margin, separately + // ceiling/flooring them so that the total spacing is preserved. topInset: TableView.view ? 0 : Math.ceil(verticalPadding / 2) bottomInset: TableView.view ? 0 : Math.ceil(verticalPadding / 2) - contentItem: RowLayout { + contentItem: GridLayout { LayoutMirroring.enabled: controlRoot.mirrored - spacing: controlRoot.spacing + rows: controlRoot.display === T.AbstractButton.TextUnderIcon ? 2 : 1 + columns: controlRoot.display === T.AbstractButton.TextBesideIcon ? 2 : 1 + rowSpacing: controlRoot.spacing + columnSpacing: controlRoot.spacing property alias truncated: textLabel.truncated Kirigami.Icon { - Layout.alignment: Qt.AlignVCenter - visible: controlRoot.icon.name !== "" || controlRoot.icon.source.toString() !== "" - source: controlRoot.icon.name !== "" ? controlRoot.icon.name : controlRoot.icon.source Layout.preferredHeight: controlRoot.icon.height Layout.preferredWidth: controlRoot.icon.width + Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter + visible: controlRoot.display !== T.AbstractButton.TextOnly + && (controlRoot.icon.name !== "" || controlRoot.icon.source.toString() !== "") + source: controlRoot.icon.name !== "" ? controlRoot.icon.name : controlRoot.icon.source } Label { @@ -65,15 +74,17 @@ font: controlRoot.font color: (controlRoot.pressed && !controlRoot.checked && !controlRoot.sectionDelegate) ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor elide: Text.ElideRight - visible: controlRoot.text - horizontalAlignment: Text.AlignLeft - verticalAlignment: Text.AlignVCenter + visible: controlRoot.display !== T.AbstractButton.IconOnly && controlRoot.text + wrapMode: controlRoot.display === T.AbstractButton.TextUnderIcon ? Text.Wrap : Text.NoWrap + horizontalAlignment: controlRoot.display === T.AbstractButton.TextUnderIcon ? Text.AlignHCenter : Text.AlignLeft + verticalAlignment: controlRoot.display === T.AbstractButton.TextUnderIcon ? Text.AlignTop : Text.AlignVCenter } } indicator: Private.SwitchIndicator { x: !controlRoot.mirrored ? controlRoot.horizontalPadding : controlRoot.width - width - controlRoot.horizontalPadding - y: controlRoot.topPadding + (controlRoot.availableHeight - height) / 2 + y: controlRoot.topPadding + (controlRoot.display === T.AbstractButton.TextUnderIcon ? 0 : ((controlRoot.availableHeight - height) / 2) ) + control: controlRoot } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qqc2-desktop-style-6.13.0/tests/testDelegates.qml new/qqc2-desktop-style-6.14.0/tests/testDelegates.qml --- old/qqc2-desktop-style-6.13.0/tests/testDelegates.qml 1970-01-01 01:00:00.000000000 +0100 +++ new/qqc2-desktop-style-6.14.0/tests/testDelegates.qml 2025-05-02 16:26:46.000000000 +0200 @@ -0,0 +1,156 @@ +/* + SPDX-FileCopyrightText: 2025 Nate Graham <n...@kde.org> + + SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later +*/ + +import QtQuick +import QtQuick.Layouts +import QtQuick.Templates as T +import QtQuick.Controls as QQC + +QQC.ApplicationWindow { + id: root + + readonly property int spacing: 18 + + visible: true + + width: 800 + height: 600 + + // List delegates + GridLayout { + anchors.fill: parent + anchors.margins: root.spacing + + columns: 4 + rowSpacing: root.spacing + columnSpacing: root.spacing + + + // ItemDelegates + Repeater { + model: [ + T.AbstractButton.TextBesideIcon, + T.AbstractButton.TextUnderIcon, + T.AbstractButton.TextOnly, + T.AbstractButton.IconOnly + ] + delegate: QQC.ScrollView { + id: itemDelegateScrollview + property int display: modelData + + Layout.fillWidth: true + Layout.fillHeight: true + contentItem: ListView { + clip: true + model: 4 + delegate: QQC.ItemDelegate { + display: itemDelegateScrollview.display + width: ListView.view.width + icon.name: "edit-bomb" + text: "Text label" + } + } + Component.onCompleted: { + background.visible = true + } + } + } + + + // CheckDelegates + Repeater { + model: [ + T.AbstractButton.TextBesideIcon, + T.AbstractButton.TextUnderIcon, + T.AbstractButton.TextOnly, + T.AbstractButton.IconOnly + ] + delegate: QQC.ScrollView { + id: checkDelegateScrollview + property int display: modelData + + Layout.fillWidth: true + Layout.fillHeight: true + contentItem: ListView { + clip: true + model: 4 + delegate: QQC.CheckDelegate { + display: checkDelegateScrollview.display + width: ListView.view.width + icon.name: "edit-bomb" + text: "Text label" + } + } + Component.onCompleted: { + background.visible = true + } + } + } + + + // RadioDelegates + Repeater { + model: [ + T.AbstractButton.TextBesideIcon, + T.AbstractButton.TextUnderIcon, + T.AbstractButton.TextOnly, + T.AbstractButton.IconOnly + ] + delegate: QQC.ScrollView { + id: radioDelegateScrollview + property int display: modelData + + Layout.fillWidth: true + Layout.fillHeight: true + contentItem: ListView { + clip: true + model: 4 + delegate: QQC.RadioDelegate { + display: radioDelegateScrollview.display + width: ListView.view.width + icon.name: "edit-bomb" + text: "Text label" + } + } + Component.onCompleted: { + background.visible = true + } + } + } + + + // SwitchDelegates + Repeater { + model: [ + T.AbstractButton.TextBesideIcon, + T.AbstractButton.TextUnderIcon, + T.AbstractButton.TextOnly, + T.AbstractButton.IconOnly + ] + delegate: QQC.ScrollView { + id: switchDelegateScrollview + property int display: modelData + + Layout.fillWidth: true + Layout.fillHeight: true + contentItem: ListView { + clip: true + model: 4 + delegate: QQC.SwitchDelegate { + display: switchDelegateScrollview.display + width: ListView.view.width + icon.name: "edit-bomb" + text: "Text label" + } + } + Component.onCompleted: { + background.visible = true + } + } + } + } +} +