SonicDE hard fork and upgrade to 6.7

This commit is contained in:
Anders da Silva Rytter Hansen 2026-08-25 01:26:42 +02:00
commit ca95bace9a
167 changed files with 16629 additions and 419 deletions

View file

@ -0,0 +1,50 @@
From a74ad95349ec913f1042f5390dbd95a8341aea06 Mon Sep 17 00:00:00 2001
From: Akseli Lahtinen <akselmo@akselmo.dev>
Date: Fri, 14 Aug 2026 23:20:58 +0300
Subject: [PATCH] Use font metrics to only inset where the text can spare it
Applying the inset from aba0f922b unconditionally causes eliding in some
cases. Check the font metrics instead and take the inset only from items
that have the width to spare.
BUG: 523118
(cherry picked from commit f0b1d7534aa2356d7336241d0c7051522e8a6b68)
Co-authored-by: Allen Hewes <rallenh@hotmail.com>
---
kstyle/breezestyle.cpp | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/kstyle/breezestyle.cpp b/kstyle/breezestyle.cpp
index 3a9096524..f0d4dfe45 100644
--- a/kstyle/breezestyle.cpp
+++ b/kstyle/breezestyle.cpp
@@ -1062,8 +1062,21 @@ QRect Style::subElementRect(SubElement element, const QStyleOption *option, cons
QRect rect = ParentStyleClass::subElementRect(element, option, widget);
if (viewItem) {
const QMargins margins = _helper->itemViewItemMargins(viewItem);
- rect.setRight(rect.right() - margins.right() - Metrics::ItemView_ItemPaddingWidth);
- rect.setLeft(rect.left() + margins.left() + Metrics::ItemView_ItemPaddingWidth);
+ const int leftInset = margins.left() + Metrics::ItemView_ItemPaddingWidth;
+ const int rightInset = margins.right() + Metrics::ItemView_ItemPaddingWidth;
+
+ // Use the font metrics to inset only as far as the text can spare,
+ // so the inset itself cannot cause elision.
+ const int textMargin = proxy()->pixelMetric(PM_FocusFrameHMargin, option, widget) + 1;
+ const int available = rect.width() - 2 * textMargin; // viewItemDrawText() removes textMargin again
+ const int required = viewItem->fontMetrics.horizontalAdvance(viewItem->text);
+ const int inset = qBound(0, available - required, leftInset + rightInset);
+
+ // Shrink both sides in proportion so the text stays where it was.
+ const int total = leftInset + rightInset;
+ const int right = total > 0 ? inset * rightInset / total : 0;
+ rect.setRight(rect.right() - right);
+ rect.setLeft(rect.left() + (inset - right));
rect.moveTop(rect.top() + margins.top() - margins.bottom());
}
--
GitLab

View file

@ -0,0 +1,202 @@
# Generated for SonicDE from Fedora's plasma-breeze.spec.
# SonicDE is a hard fork of KDE Plasma; the sources come from the
# https://github.com/Sonic-DE/sonic-breeze fork, not from download.kde.org.
%define _disable_source_fetch 0
%define debug_package %{nil}
%global reponame sonic-breeze
# Upstream KDE project: breeze
%global oldname plasma-breeze
%global base_name breeze
# EPEL10 does not have kf5
%if 0%{?rhel} && 0%{?rhel} >= 10
%bcond_with kf5
%else
%bcond_without kf5
%endif
#Name: plasma-breeze
Name: sonic-breeze
Version: 6.7.4.3
Release: 1%{?dist}
Summary: Artwork, styles and assets for the Breeze visual style for the Plasma Desktop
License: BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND MIT
#URL: https://invent.kde.org/plasma/%%{base_name}.git
URL: https://github.com/Sonic-DE/%{reponame}
#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{base_name}-%%{version}.tar.xz
Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz
#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{base_name}-%%{version}.tar.xz.sig
# Upstream Patches
# Use font metrics to only inset where the text can spare it
# https://invent.kde.org/plasma/breeze/-/commit/a74ad95349ec913f1042f5390dbd95a8341aea06
Patch0: a74ad95349ec913f1042f5390dbd95a8341aea06.patch
# Misc
BuildRequires: sonic-frameworks-cmake-modules
BuildRequires: gettext
%if %{with kf5}
# Qt5
BuildRequires: kf5-rpm-macros
BuildRequires: cmake(KF5Config)
BuildRequires: cmake(KF5CoreAddons)
BuildRequires: cmake(KF5FrameworkIntegration)
BuildRequires: cmake(KF5GuiAddons)
BuildRequires: cmake(KF5Kirigami2)
BuildRequires: cmake(KF5WindowSystem)
BuildRequires: cmake(Qt5DBus)
BuildRequires: cmake(Qt5Quick)
BuildRequires: cmake(Qt5Widgets)
BuildRequires: cmake(Qt5X11Extras)
Requires: (%{name}-qt5 if qt5-qtbase-gui)
%endif
# Qt6
BuildRequires: sonic-rpm-macros
BuildRequires: cmake(KDecoration3)
BuildRequires: cmake(KF6ColorScheme)
BuildRequires: cmake(KF6Config)
BuildRequires: cmake(KF6CoreAddons)
BuildRequires: cmake(KF6FrameworkIntegration)
BuildRequires: cmake(KF6GuiAddons)
BuildRequires: cmake(KF6I18n)
BuildRequires: cmake(KF6KCMUtils)
BuildRequires: cmake(KF6KirigamiPlatform)
BuildRequires: cmake(KF6WindowSystem)
BuildRequires: cmake(Qt6Core)
BuildRequires: cmake(Qt6DBus)
BuildRequires: cmake(Qt6Quick)
BuildRequires: cmake(Qt6Widgets)
BuildRequires: cmake(Qt6Svg)
Requires: %{name}-qt6
# since we provide a cmake dev-like file
Provides: %{name}-devel = %{version}-%{release}
Provides: plasma-breeze = %{version}-%{release}
Conflicts: plasma-breeze < %{version}-%{release}
%description
%{summary}.
%package qt6
Summary: Breeze application style for Qt6
Requires: %{name}-common = %{version}-%{release}
Provides: plasma-breeze-qt6 = %{version}-%{release}
Conflicts: plasma-breeze-qt6 < %{version}-%{release}
%description qt6
%{summary}.
%if %{with kf5}
%package qt5
Summary: Breeze application style for Qt5
Requires: %{name}-common = %{version}-%{release}
Provides: plasma-breeze-qt5 = %{version}-%{release}
Conflicts: plasma-breeze-qt5 < %{version}-%{release}
%description qt5
%{summary}.
%endif
%package common
Summary: Common files shared between Plasma 5 and Plasma 6 versions of the Breeze style
BuildArch: noarch
Provides: plasma-breeze-common = %{version}-%{release}
Conflicts: plasma-breeze-common < %{version}-%{release}
%description common
%{summary}.
%package -n breeze-cursor-theme
Summary: Breeze cursor theme
BuildArch: noarch
Obsoletes: breeze-icon-theme < 5.17.0
Provides: breeze-cursor-themes = %{version}-%{release}
%description -n breeze-cursor-theme
%{summary}.
%prep
%autosetup -p1 -n %{reponame}-%{version}
%build
mkdir -p qt6build
pushd qt6build
%cmake_kf6 -S .. -DBUILD_QT6=ON -DBUILD_QT5=OFF
%cmake_build
popd
%if %{with kf5}
mkdir -p qt5build
pushd qt5build
%cmake_kf5 -S .. -DBUILD_QT6=OFF -DBUILD_QT5=ON
%cmake_build
popd
%endif
%install
%if %{with kf5}
pushd qt5build
%cmake_install
popd
%endif
pushd qt6build
%cmake_install
popd
%find_lang breeze --all-name
%files -f breeze.lang
%license LICENSES/*.txt
%{_bindir}/breeze-settings6
%{_bindir}/kcursorgen
%{_kf6_datadir}/applications/breezestyleconfig.desktop
%{_kf6_datadir}/applications/kcm_breezedecoration.desktop
%dir %{_kf6_qtplugindir}/kstyle_config/
%{_kf6_qtplugindir}/kstyle_config/breezestyleconfig.so
%{_kf6_qtplugindir}/org.kde.kdecoration3.kcm/kcm_breezedecoration.so
%{_kf6_qtplugindir}/org.kde.kdecoration3/org.kde.breeze.so
%{_libdir}/cmake/Breeze/
%if %{with kf5}
%files qt5
%{_kf5_qtplugindir}/styles/breeze5.so
%endif
%files qt6
%{_kf6_qtplugindir}/styles/breeze6.so
%files common
%{_datadir}/color-schemes/*.colors
%{_datadir}/kstyle/themes/breeze.themerc
%{_datadir}/icons/hicolor/*/apps/breeze-settings.*
%dir %{_datadir}/QtCurve/
%{_datadir}/QtCurve/Breeze.qtcurve
%{_datadir}/wallpapers/Next/
%files -n breeze-cursor-theme
%dir %{_kf6_datadir}/icons/Breeze_Light/
%{_kf6_datadir}/icons/Breeze_Light/cursors/
%{_kf6_datadir}/icons/Breeze_Light/cursors_scalable/
%{_kf6_datadir}/icons/Breeze_Light/index.theme
%dir %{_kf6_datadir}/icons/breeze_cursors/
%{_kf6_datadir}/icons/breeze_cursors/cursors/
%{_kf6_datadir}/icons/breeze_cursors/cursors_scalable/
%{_kf6_datadir}/icons/breeze_cursors/index.theme
%changelog
* Mon Aug 24 2026 Anders da Silva Rytter Hansen <andersrh@users.noreply.github.com> - 6.7.4.3-1
- SonicDE hard fork build for Enterprise Linux 10 and Fedora