We have moved to Git. This repository is only provided for compatibility with old installations. Learn how to migrate your installation here.

changeset 250:37508d4f31c8

[sync] imported 18f98a6..d0858fb from upstream commit d0858fbd09faf50138d7ad3a4559ba1f3e2b930c Author: Daniel Neugebauer <dneuge@energiequant.de> Date: Thu Apr 27 12:49:23 2023 +0200 kde-plasma/breeze: configurable outline (MR 292) via patch_outline Source: https://invent.kde.org/plasma/breeze/-/merge_requests/292 commit ef044cae13e73c5f9dd2d078a4879df3987cc69a Author: Daniel Neugebauer <dneuge@energiequant.de> Date: Thu Apr 27 12:26:14 2023 +0200 kde-plasma/breeze-5.27.4 copied from main Gentoo repository
author Migration Sync <gentoo-overlay@megacoffee.net>
date Thu, 27 Apr 2023 11:00:03 +0000
parents 0685ed0fb913
children 4e7ce7eba104
files kde-plasma/breeze/Manifest kde-plasma/breeze/breeze-5.27.4.ebuild kde-plasma/breeze/files/5.27.4_breeze_mr292_outline_intensity_setting.patch kde-plasma/breeze/metadata.xml
diffstat 4 files changed, 754 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kde-plasma/breeze/Manifest	Thu Apr 27 11:00:03 2023 +0000
@@ -0,0 +1,3 @@
+AUX 5.27.4_breeze_mr292_outline_intensity_setting.patch 28046 BLAKE2B d23c3fa2c9ddb4d95c1f5faaf28e1ebd9deeb607ef4ab7161566b2c3ef287fd09d33af10a7b2df78624a95af438f081ae2ef309af2152d951b4fd72d6a5d3c00 SHA512 df8412801223619cfb6c0bedf23b40951341170d506038b2d5480da9cebd1ad5eb1de471043870fa9bbc6d5fb1268a3cfe8fba9370260fc49f42b009a7025329
+DIST breeze-5.27.4.tar.xz 87590008 BLAKE2B 478c552d522f101dde971c5a790bd18565068a62c3d089060d5392c1566c07e78536dc64671b9cbd7b024e80de166df8a837f87927e75d7bd3a0bd27de238299 SHA512 4fdb91d661cda973f59016c81172ceebd1a7d76ba7a07f3d6239e8716cea936b6fb89e9661adebc20f44431351eee672a09a75a851cf61f624852b3472826430
+EBUILD breeze-5.27.4.ebuild 1291 BLAKE2B 3c8df115fa90c7d05de18ade18ab000519d7663db634ad54949f63257ad8c8e8f1f0d489a31841596ac06e89bb030bc0f16b7e7e2b9bbef4e182ebf6c7626bdd SHA512 8b9c8545f19d366a3ac382bdc47b52a42feacd867113946f1c812dd343e9b3be52b0951b2ed835306db6277a176d219c7f5b70efc2bd115b3488342541754087
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kde-plasma/breeze/breeze-5.27.4.ebuild	Thu Apr 27 11:00:03 2023 +0000
@@ -0,0 +1,49 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+KFMIN=5.102.0
+PVCUT=$(ver_cut 1-3)
+QTMIN=5.15.7
+inherit ecm plasma.kde.org
+
+DESCRIPTION="Breeze visual style for the Plasma desktop"
+HOMEPAGE="https://invent.kde.org/plasma/breeze"
+
+LICENSE="GPL-2" # TODO: CHECK
+SLOT="5"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+IUSE="patch_outline"
+
+RDEPEND="
+	>=dev-qt/qtdbus-${QTMIN}:5
+	>=dev-qt/qtdeclarative-${QTMIN}:5
+	>=dev-qt/qtgui-${QTMIN}:5
+	>=dev-qt/qtwidgets-${QTMIN}:5
+	>=dev-qt/qtx11extras-${QTMIN}:5
+	>=kde-frameworks/frameworkintegration-${KFMIN}:5
+	>=kde-frameworks/kcmutils-${KFMIN}:5
+	>=kde-frameworks/kconfig-${KFMIN}:5
+	>=kde-frameworks/kconfigwidgets-${KFMIN}:5
+	>=kde-frameworks/kcoreaddons-${KFMIN}:5
+	>=kde-frameworks/kguiaddons-${KFMIN}:5
+	>=kde-frameworks/ki18n-${KFMIN}:5
+	>=kde-frameworks/kiconthemes-${KFMIN}:5
+	>=kde-frameworks/kwidgetsaddons-${KFMIN}:5
+	>=kde-plasma/kdecoration-${PVCUT}:5
+"
+DEPEND="${RDEPEND}"
+BDEPEND=">=kde-frameworks/kcmutils-${KFMIN}:5"
+PDEPEND="
+	>=kde-frameworks/breeze-icons-${KFMIN}:5
+	>=kde-plasma/kde-cli-tools-${PVCUT}:5
+"
+
+src_prepare() {
+	if use patch_outline; then
+		eapply "${FILESDIR}/5.27.4_breeze_mr292_outline_intensity_setting.patch"
+	fi
+
+	cmake_src_prepare
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kde-plasma/breeze/files/5.27.4_breeze_mr292_outline_intensity_setting.patch	Thu Apr 27 11:00:03 2023 +0000
@@ -0,0 +1,695 @@
+From a77b1e00416d7d946539a3c2335b42e8c81cbe54 Mon Sep 17 00:00:00 2001
+From: Akseli Lahtinen <akselmo@akselmo.dev>
+Date: Sun, 26 Feb 2023 18:37:54 +0200
+Subject: [PATCH 1/7] add m_outlineIntensity, check for outline intensity
+ before drawing
+
+---
+ kdecoration/breezedecoration.cpp | 62 ++++++++++++++++----------------
+ kdecoration/breezedecoration.h   |  2 ++
+ 2 files changed, 34 insertions(+), 30 deletions(-)
+
+diff --git a/kdecoration/breezedecoration.cpp b/kdecoration/breezedecoration.cpp
+index cc5bb75d7..699221b79 100644
+--- a/kdecoration/breezedecoration.cpp
++++ b/kdecoration/breezedecoration.cpp
+@@ -743,7 +743,7 @@ void Decoration::updateShadow()
+                          outlineColor.hslSaturationF(),
+                          qBound(0.1, outlineColor.lightnessF(), 1.0),
+                          s->isAlphaChannelSupported() ? 0.9 : 1.0);
+-    outlineColor.lightnessF() >= 0.5 ? outlineColor = outlineColor.darker(170) : outlineColor = outlineColor.lighter(170);
++    outlineColor.lightnessF() >= 0.5 ? outlineColor = outlineColor.darker(m_outlineIntensity) : outlineColor = outlineColor.lighter(m_outlineIntensity);
+ 
+     // Animated case, no cached shadow object
+     if ((m_shadowAnimation->state() == QAbstractAnimation::Running) && (m_shadowOpacity != 0.0) && (m_shadowOpacity != 1.0)) {
+@@ -821,36 +821,38 @@ QSharedPointer<KDecoration2::DecorationShadow> Decoration::createShadowObject(co
+     painter.drawRoundedRect(innerRect, m_scaledCornerRadius + 0.5, m_scaledCornerRadius + 0.5);
+ 
+     // Draw window outline
+-    const qreal outlineWidth = 1.001;
+-    const qreal penOffset = outlineWidth / 2;
+-
+-    QRectF outlineRect = innerRect + QMarginsF(penOffset, penOffset, penOffset, penOffset);
+-    qreal cornerSize = m_scaledCornerRadius * 2;
+-    QRectF cornerRect(outlineRect.x(), outlineRect.y(), cornerSize, cornerSize);
+-    QPainterPath outlinePath;
+-
+-    outlinePath.arcMoveTo(cornerRect, 180);
+-    outlinePath.arcTo(cornerRect, 180, -90);
+-    cornerRect.moveTopRight(outlineRect.topRight());
+-    outlinePath.arcTo(cornerRect, 90, -90);
+-
+-    // Check if border size is "no borders" or "no side-borders"
+-    if (borderSize(true) == 0) {
+-        outlinePath.lineTo(outlineRect.bottomRight());
+-        outlinePath.lineTo(outlineRect.bottomLeft());
+-    } else {
+-        cornerRect.moveBottomRight(outlineRect.bottomRight());
+-        outlinePath.arcTo(cornerRect, 0, -90);
+-        cornerRect.moveBottomLeft(outlineRect.bottomLeft());
+-        outlinePath.arcTo(cornerRect, 270, -90);
+-    }
+-    outlinePath.closeSubpath();
++    if (m_outlineIntensity > 0) {
++        const qreal outlineWidth = 1.001;
++        const qreal penOffset = outlineWidth / 2;
++
++        QRectF outlineRect = innerRect + QMarginsF(penOffset, penOffset, penOffset, penOffset);
++        qreal cornerSize = m_scaledCornerRadius * 2;
++        QRectF cornerRect(outlineRect.x(), outlineRect.y(), cornerSize, cornerSize);
++        QPainterPath outlinePath;
++
++        outlinePath.arcMoveTo(cornerRect, 180);
++        outlinePath.arcTo(cornerRect, 180, -90);
++        cornerRect.moveTopRight(outlineRect.topRight());
++        outlinePath.arcTo(cornerRect, 90, -90);
++
++        // Check if border size is "no borders" or "no side-borders"
++        if (borderSize(true) == 0) {
++            outlinePath.lineTo(outlineRect.bottomRight());
++            outlinePath.lineTo(outlineRect.bottomLeft());
++        } else {
++            cornerRect.moveBottomRight(outlineRect.bottomRight());
++            outlinePath.arcTo(cornerRect, 0, -90);
++            cornerRect.moveBottomLeft(outlineRect.bottomLeft());
++            outlinePath.arcTo(cornerRect, 270, -90);
++        }
++        outlinePath.closeSubpath();
+ 
+-    painter.setPen(QPen(outlineColor, outlineWidth));
+-    painter.setBrush(Qt::NoBrush);
+-    painter.setCompositionMode(QPainter::CompositionMode_Source);
+-    painter.setRenderHint(QPainter::Antialiasing);
+-    painter.drawPath(outlinePath);
++        painter.setPen(QPen(outlineColor, outlineWidth));
++        painter.setBrush(Qt::NoBrush);
++        painter.setCompositionMode(QPainter::CompositionMode_Source);
++        painter.setRenderHint(QPainter::Antialiasing);
++        painter.drawPath(outlinePath);
++    }
+ 
+     painter.end();
+ 
+diff --git a/kdecoration/breezedecoration.h b/kdecoration/breezedecoration.h
+index 826e396d8..0cb7864d9 100644
+--- a/kdecoration/breezedecoration.h
++++ b/kdecoration/breezedecoration.h
+@@ -131,6 +131,8 @@ private:
+     qreal m_opacity = 0;
+     qreal m_shadowOpacity = 0;
+ 
++    int m_outlineIntensity = 170;
++
+     //*frame corner radius, scaled according to DPI
+     qreal m_scaledCornerRadius = 3;
+ 
+-- 
+GitLab
+
+
+From 31a801b59d7cb33a4c1d944ee0ab49637f5c7dc0 Mon Sep 17 00:00:00 2001
+From: Akseli Lahtinen <akselmo@akselmo.dev>
+Date: Sun, 26 Feb 2023 20:08:52 +0200
+Subject: [PATCH 2/7] add outline intensity setting
+
+---
+ kdecoration/breezedecoration.cpp              |  5 ++--
+ kdecoration/breezedecoration.h                |  2 --
+ kdecoration/breezesettingsdata.kcfg           |  6 +++++
+ kdecoration/config/breezeconfigwidget.cpp     |  6 +++++
+ .../config/ui/breezeconfigurationui.ui        | 25 ++++++++++++++++++-
+ 5 files changed, 39 insertions(+), 5 deletions(-)
+
+diff --git a/kdecoration/breezedecoration.cpp b/kdecoration/breezedecoration.cpp
+index 699221b79..d6ae873e5 100644
+--- a/kdecoration/breezedecoration.cpp
++++ b/kdecoration/breezedecoration.cpp
+@@ -743,7 +743,8 @@ void Decoration::updateShadow()
+                          outlineColor.hslSaturationF(),
+                          qBound(0.1, outlineColor.lightnessF(), 1.0),
+                          s->isAlphaChannelSupported() ? 0.9 : 1.0);
+-    outlineColor.lightnessF() >= 0.5 ? outlineColor = outlineColor.darker(m_outlineIntensity) : outlineColor = outlineColor.lighter(m_outlineIntensity);
++    outlineColor.lightnessF() >= 0.5 ? outlineColor = outlineColor.darker(m_internalSettings->outlineIntensity())
++                                     : outlineColor = outlineColor.lighter(m_internalSettings->outlineIntensity());
+ 
+     // Animated case, no cached shadow object
+     if ((m_shadowAnimation->state() == QAbstractAnimation::Running) && (m_shadowOpacity != 0.0) && (m_shadowOpacity != 1.0)) {
+@@ -821,7 +822,7 @@ QSharedPointer<KDecoration2::DecorationShadow> Decoration::createShadowObject(co
+     painter.drawRoundedRect(innerRect, m_scaledCornerRadius + 0.5, m_scaledCornerRadius + 0.5);
+ 
+     // Draw window outline
+-    if (m_outlineIntensity > 0) {
++    if (m_internalSettings->outlineIntensity() > 0) {
+         const qreal outlineWidth = 1.001;
+         const qreal penOffset = outlineWidth / 2;
+ 
+diff --git a/kdecoration/breezedecoration.h b/kdecoration/breezedecoration.h
+index 0cb7864d9..826e396d8 100644
+--- a/kdecoration/breezedecoration.h
++++ b/kdecoration/breezedecoration.h
+@@ -131,8 +131,6 @@ private:
+     qreal m_opacity = 0;
+     qreal m_shadowOpacity = 0;
+ 
+-    int m_outlineIntensity = 170;
+-
+     //*frame corner radius, scaled according to DPI
+     qreal m_scaledCornerRadius = 3;
+ 
+diff --git a/kdecoration/breezesettingsdata.kcfg b/kdecoration/breezesettingsdata.kcfg
+index f57f61fe4..616035f9e 100644
+--- a/kdecoration/breezesettingsdata.kcfg
++++ b/kdecoration/breezesettingsdata.kcfg
+@@ -35,6 +35,12 @@
+         <default>false</default>
+     </entry>
+ 
++    <entry name="OutlineIntensity" type = "Int">
++      <default>170</default>
++      <min>0</min>
++      <max>200</max>
++    </entry>
++
+   </group>
+ 
+   <group name="Windeco">
+diff --git a/kdecoration/config/breezeconfigwidget.cpp b/kdecoration/config/breezeconfigwidget.cpp
+index f75e1b3b7..e1e0dd63a 100644
+--- a/kdecoration/config/breezeconfigwidget.cpp
++++ b/kdecoration/config/breezeconfigwidget.cpp
+@@ -38,6 +38,7 @@ ConfigWidget::ConfigWidget(QWidget *parent, const QVariantList &args)
+     connect(m_ui.shadowSize, SIGNAL(currentIndexChanged(int)), SLOT(updateChanged()));
+     connect(m_ui.shadowStrength, SIGNAL(valueChanged(int)), SLOT(updateChanged()));
+     connect(m_ui.shadowColor, &KColorButton::changed, this, &ConfigWidget::updateChanged);
++    connect(m_ui.outlineIntensity, SIGNAL(valueChanged(int)), SLOT(updateChanged()));
+ 
+     // track exception changes
+     connect(m_ui.exceptions, &ExceptionListWidget::changed, this, &ConfigWidget::updateChanged);
+@@ -69,6 +70,7 @@ void ConfigWidget::load()
+ 
+     m_ui.shadowStrength->setValue(qRound(qreal(m_internalSettings->shadowStrength() * 100) / 255));
+     m_ui.shadowColor->setColor(m_internalSettings->shadowColor());
++    m_ui.outlineIntensity->setValue(m_internalSettings->outlineIntensity());
+ 
+     // load exceptions
+     ExceptionList exceptions;
+@@ -94,6 +96,7 @@ void ConfigWidget::save()
+     m_internalSettings->setShadowSize(m_ui.shadowSize->currentIndex());
+     m_internalSettings->setShadowStrength(qRound(qreal(m_ui.shadowStrength->value() * 255) / 100));
+     m_internalSettings->setShadowColor(m_ui.shadowColor->color());
++    m_internalSettings->setOutlineIntensity(m_ui.outlineIntensity->value());
+ 
+     // save configuration
+     m_internalSettings->save();
+@@ -136,6 +139,7 @@ void ConfigWidget::defaults()
+     m_ui.shadowSize->setCurrentIndex(m_internalSettings->shadowSize());
+     m_ui.shadowStrength->setValue(qRound(qreal(m_internalSettings->shadowStrength() * 100) / 255));
+     m_ui.shadowColor->setColor(m_internalSettings->shadowColor());
++    m_ui.outlineIntensity->setValue(m_internalSettings->outlineIntensity());
+ }
+ 
+ //_______________________________________________
+@@ -167,6 +171,8 @@ void ConfigWidget::updateChanged()
+         modified = true;
+     } else if (m_ui.shadowColor->color() != m_internalSettings->shadowColor()) {
+         modified = true;
++    } else if (m_ui.outlineIntensity->value() != m_internalSettings->outlineIntensity()) {
++        modified = true;
+ 
+         // exceptions
+     } else if (m_ui.exceptions->isChanged()) {
+diff --git a/kdecoration/config/ui/breezeconfigurationui.ui b/kdecoration/config/ui/breezeconfigurationui.ui
+index f29e38c13..6d1f6a7b2 100644
+--- a/kdecoration/config/ui/breezeconfigurationui.ui
++++ b/kdecoration/config/ui/breezeconfigurationui.ui
+@@ -290,7 +290,30 @@
+        <item row="2" column="1">
+         <widget class="KColorButton" name="shadowColor"/>
+        </item>
+-       <item row="3" column="0" colspan="3">
++       <item row="3" column="0">
++        <widget class="QLabel" name="label_6">
++         <property name="text">
++          <string comment="outline intensity">Outline intensity</string>
++         </property>
++         <property name="alignment">
++          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
++         </property>
++         <property name="buddy">
++          <cstring>outlineIntensity</cstring>
++         </property>
++        </widget>
++       </item>
++       <item row="3" column="1">
++        <widget class="QSpinBox" name="outlineIntensity">
++         <property name="minimum">
++          <number>0</number>
++         </property>
++         <property name="maximum">
++          <number>200</number>
++         </property>
++        </widget>
++       </item>
++       <item row="4" column="0" colspan="3">
+         <spacer name="verticalSpacer_3">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+-- 
+GitLab
+
+
+From 70ab16974547b351f50ef977afe05a37c28b289a Mon Sep 17 00:00:00 2001
+From: Akseli Lahtinen <akselmo@akselmo.dev>
+Date: Wed, 1 Mar 2023 20:52:55 +0200
+Subject: [PATCH 3/7] Set outline intensity default to 100, add slider
+
+---
+ kdecoration/breezedecoration.cpp              |  2 +-
+ kdecoration/breezesettingsdata.kcfg           |  2 +-
+ .../config/ui/breezeconfigurationui.ui        | 21 ++++++++++++++++---
+ 3 files changed, 20 insertions(+), 5 deletions(-)
+
+diff --git a/kdecoration/breezedecoration.cpp b/kdecoration/breezedecoration.cpp
+index d6ae873e5..3e2b145d5 100644
+--- a/kdecoration/breezedecoration.cpp
++++ b/kdecoration/breezedecoration.cpp
+@@ -822,7 +822,7 @@ QSharedPointer<KDecoration2::DecorationShadow> Decoration::createShadowObject(co
+     painter.drawRoundedRect(innerRect, m_scaledCornerRadius + 0.5, m_scaledCornerRadius + 0.5);
+ 
+     // Draw window outline
+-    if (m_internalSettings->outlineIntensity() > 0) {
++    if (m_internalSettings->outlineIntensity() > 100) {
+         const qreal outlineWidth = 1.001;
+         const qreal penOffset = outlineWidth / 2;
+ 
+diff --git a/kdecoration/breezesettingsdata.kcfg b/kdecoration/breezesettingsdata.kcfg
+index 616035f9e..88db8e643 100644
+--- a/kdecoration/breezesettingsdata.kcfg
++++ b/kdecoration/breezesettingsdata.kcfg
+@@ -37,7 +37,7 @@
+ 
+     <entry name="OutlineIntensity" type = "Int">
+       <default>170</default>
+-      <min>0</min>
++      <min>100</min>
+       <max>200</max>
+     </entry>
+ 
+diff --git a/kdecoration/config/ui/breezeconfigurationui.ui b/kdecoration/config/ui/breezeconfigurationui.ui
+index 6d1f6a7b2..ef130a5cf 100644
+--- a/kdecoration/config/ui/breezeconfigurationui.ui
++++ b/kdecoration/config/ui/breezeconfigurationui.ui
+@@ -293,7 +293,7 @@
+        <item row="3" column="0">
+         <widget class="QLabel" name="label_6">
+          <property name="text">
+-          <string comment="outline intensity">Outline intensity</string>
++          <string comment="outline intensity">Outline intensity:</string>
+          </property>
+          <property name="alignment">
+           <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+@@ -304,13 +304,28 @@
+         </widget>
+        </item>
+        <item row="3" column="1">
+-        <widget class="QSpinBox" name="outlineIntensity">
++        <widget class="QSlider" name="outlineIntensity">
+          <property name="minimum">
+-          <number>0</number>
++          <number>100</number>
+          </property>
+          <property name="maximum">
+           <number>200</number>
+          </property>
++         <property name="singleStep">
++          <number>10</number>
++         </property>
++         <property name="pageStep">
++          <number>10</number>
++         </property>
++         <property name="orientation">
++          <enum>Qt::Horizontal</enum>
++         </property>
++         <property name="tickPosition">
++          <enum>QSlider::TicksBelow</enum>
++         </property>
++         <property name="tickInterval">
++          <number>10</number>
++         </property>
+         </widget>
+        </item>
+        <item row="4" column="0" colspan="3">
+-- 
+GitLab
+
+
+From 4bf3cd06c2cc938d161c872bba76427ff993fd2d Mon Sep 17 00:00:00 2001
+From: Akseli Lahtinen <akselmo@akselmo.dev>
+Date: Thu, 2 Mar 2023 12:59:49 +0200
+Subject: [PATCH 4/7] better intensity values
+
+---
+ kdecoration/breezedecoration.cpp               |  2 +-
+ kdecoration/breezesettingsdata.kcfg            |  4 ++--
+ kdecoration/config/ui/breezeconfigurationui.ui | 10 +++++-----
+ 3 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/kdecoration/breezedecoration.cpp b/kdecoration/breezedecoration.cpp
+index 3e2b145d5..abc805e70 100644
+--- a/kdecoration/breezedecoration.cpp
++++ b/kdecoration/breezedecoration.cpp
+@@ -822,7 +822,7 @@ QSharedPointer<KDecoration2::DecorationShadow> Decoration::createShadowObject(co
+     painter.drawRoundedRect(innerRect, m_scaledCornerRadius + 0.5, m_scaledCornerRadius + 0.5);
+ 
+     // Draw window outline
+-    if (m_internalSettings->outlineIntensity() > 100) {
++    if (m_internalSettings->outlineIntensity() > 110) {
+         const qreal outlineWidth = 1.001;
+         const qreal penOffset = outlineWidth / 2;
+ 
+diff --git a/kdecoration/breezesettingsdata.kcfg b/kdecoration/breezesettingsdata.kcfg
+index 88db8e643..1d3db8bd2 100644
+--- a/kdecoration/breezesettingsdata.kcfg
++++ b/kdecoration/breezesettingsdata.kcfg
+@@ -37,8 +37,8 @@
+ 
+     <entry name="OutlineIntensity" type = "Int">
+       <default>170</default>
+-      <min>100</min>
+-      <max>200</max>
++      <min>110</min>
++      <max>250</max>
+     </entry>
+ 
+   </group>
+diff --git a/kdecoration/config/ui/breezeconfigurationui.ui b/kdecoration/config/ui/breezeconfigurationui.ui
+index ef130a5cf..3385c97e9 100644
+--- a/kdecoration/config/ui/breezeconfigurationui.ui
++++ b/kdecoration/config/ui/breezeconfigurationui.ui
+@@ -306,16 +306,16 @@
+        <item row="3" column="1">
+         <widget class="QSlider" name="outlineIntensity">
+          <property name="minimum">
+-          <number>100</number>
++          <number>110</number>
+          </property>
+          <property name="maximum">
+-          <number>200</number>
++          <number>250</number>
+          </property>
+          <property name="singleStep">
+-          <number>10</number>
++          <number>20</number>
+          </property>
+          <property name="pageStep">
+-          <number>10</number>
++          <number>20</number>
+          </property>
+          <property name="orientation">
+           <enum>Qt::Horizontal</enum>
+@@ -324,7 +324,7 @@
+           <enum>QSlider::TicksBelow</enum>
+          </property>
+          <property name="tickInterval">
+-          <number>10</number>
++          <number>20</number>
+          </property>
+         </widget>
+        </item>
+-- 
+GitLab
+
+
+From 0f31f23648463ce4c0aa9e90fb74deccff273bc3 Mon Sep 17 00:00:00 2001
+From: Akseli Lahtinen <akselmo@akselmo.dev>
+Date: Thu, 2 Mar 2023 18:13:14 +0200
+Subject: [PATCH 5/7] change from slider to combobox
+
+---
+ kdecoration/breezedecoration.cpp              | 25 ++++++++--
+ kdecoration/breezesettingsdata.kcfg           | 14 ++++--
+ kdecoration/config/breezeconfigwidget.cpp     | 14 ++++--
+ .../config/ui/breezeconfigurationui.ui        | 48 ++++++++++---------
+ 4 files changed, 67 insertions(+), 34 deletions(-)
+
+diff --git a/kdecoration/breezedecoration.cpp b/kdecoration/breezedecoration.cpp
+index abc805e70..eb4a7d0ec 100644
+--- a/kdecoration/breezedecoration.cpp
++++ b/kdecoration/breezedecoration.cpp
+@@ -111,6 +111,25 @@ inline CompositeShadowParams lookupShadowParams(int size)
+         return s_shadowParams[3];
+     }
+ }
++
++inline int lookupOutlineIntensity(int intensity)
++{
++    switch (intensity) {
++    case Breeze::InternalSettings::OutlineOff:
++        return 100;
++    case Breeze::InternalSettings::OutlineLow:
++        return 130;
++    case Breeze::InternalSettings::OutlineMedium:
++        return 170;
++    case Breeze::InternalSettings::OutlineHigh:
++        return 210;
++    case Breeze::InternalSettings::OutlineMaximum:
++        return 250;
++    default:
++        // Fallback to the Medium intensity.
++        return 170;
++    }
++}
+ }
+ 
+ namespace Breeze
+@@ -743,8 +762,8 @@ void Decoration::updateShadow()
+                          outlineColor.hslSaturationF(),
+                          qBound(0.1, outlineColor.lightnessF(), 1.0),
+                          s->isAlphaChannelSupported() ? 0.9 : 1.0);
+-    outlineColor.lightnessF() >= 0.5 ? outlineColor = outlineColor.darker(m_internalSettings->outlineIntensity())
+-                                     : outlineColor = outlineColor.lighter(m_internalSettings->outlineIntensity());
++    outlineColor.lightnessF() >= 0.5 ? outlineColor = outlineColor.darker(lookupOutlineIntensity(m_internalSettings->outlineIntensity()))
++                                     : outlineColor = outlineColor.lighter(lookupOutlineIntensity(m_internalSettings->outlineIntensity()));
+ 
+     // Animated case, no cached shadow object
+     if ((m_shadowAnimation->state() == QAbstractAnimation::Running) && (m_shadowOpacity != 0.0) && (m_shadowOpacity != 1.0)) {
+@@ -822,7 +841,7 @@ QSharedPointer<KDecoration2::DecorationShadow> Decoration::createShadowObject(co
+     painter.drawRoundedRect(innerRect, m_scaledCornerRadius + 0.5, m_scaledCornerRadius + 0.5);
+ 
+     // Draw window outline
+-    if (m_internalSettings->outlineIntensity() > 110) {
++    if (lookupOutlineIntensity(m_internalSettings->outlineIntensity()) > 110) {
+         const qreal outlineWidth = 1.001;
+         const qreal penOffset = outlineWidth / 2;
+ 
+diff --git a/kdecoration/breezesettingsdata.kcfg b/kdecoration/breezesettingsdata.kcfg
+index 1d3db8bd2..559983d79 100644
+--- a/kdecoration/breezesettingsdata.kcfg
++++ b/kdecoration/breezesettingsdata.kcfg
+@@ -35,12 +35,16 @@
+         <default>false</default>
+     </entry>
+ 
+-    <entry name="OutlineIntensity" type = "Int">
+-      <default>170</default>
+-      <min>110</min>
+-      <max>250</max>
++    <entry name="OutlineIntensity" type = "Enum">
++      <choices>
++          <choice name="OutlineOff"/>
++          <choice name="OutlineLow"/>
++          <choice name="OutlineMedium"/>
++          <choice name="OutlineHigh"/>
++          <choice name="OutlineMaximum"/>
++      </choices>
++      <default>OutlineMedium</default>
+     </entry>
+-
+   </group>
+ 
+   <group name="Windeco">
+diff --git a/kdecoration/config/breezeconfigwidget.cpp b/kdecoration/config/breezeconfigwidget.cpp
+index e1e0dd63a..d57c08463 100644
+--- a/kdecoration/config/breezeconfigwidget.cpp
++++ b/kdecoration/config/breezeconfigwidget.cpp
+@@ -70,7 +70,13 @@ void ConfigWidget::load()
+ 
+     m_ui.shadowStrength->setValue(qRound(qreal(m_internalSettings->shadowStrength() * 100) / 255));
+     m_ui.shadowColor->setColor(m_internalSettings->shadowColor());
+-    m_ui.outlineIntensity->setValue(m_internalSettings->outlineIntensity());
++
++    // load outline intensity
++    if (m_internalSettings->outlineIntensity() <= InternalSettings::OutlineMaximum) {
++        m_ui.outlineIntensity->setCurrentIndex(m_internalSettings->outlineIntensity());
++    } else {
++        m_ui.outlineIntensity->setCurrentIndex(InternalSettings::OutlineMedium);
++    }
+ 
+     // load exceptions
+     ExceptionList exceptions;
+@@ -96,7 +102,7 @@ void ConfigWidget::save()
+     m_internalSettings->setShadowSize(m_ui.shadowSize->currentIndex());
+     m_internalSettings->setShadowStrength(qRound(qreal(m_ui.shadowStrength->value() * 255) / 100));
+     m_internalSettings->setShadowColor(m_ui.shadowColor->color());
+-    m_internalSettings->setOutlineIntensity(m_ui.outlineIntensity->value());
++    m_internalSettings->setOutlineIntensity(m_ui.outlineIntensity->currentIndex());
+ 
+     // save configuration
+     m_internalSettings->save();
+@@ -139,7 +145,7 @@ void ConfigWidget::defaults()
+     m_ui.shadowSize->setCurrentIndex(m_internalSettings->shadowSize());
+     m_ui.shadowStrength->setValue(qRound(qreal(m_internalSettings->shadowStrength() * 100) / 255));
+     m_ui.shadowColor->setColor(m_internalSettings->shadowColor());
+-    m_ui.outlineIntensity->setValue(m_internalSettings->outlineIntensity());
++    m_ui.outlineIntensity->setCurrentIndex(m_internalSettings->outlineIntensity());
+ }
+ 
+ //_______________________________________________
+@@ -171,7 +177,7 @@ void ConfigWidget::updateChanged()
+         modified = true;
+     } else if (m_ui.shadowColor->color() != m_internalSettings->shadowColor()) {
+         modified = true;
+-    } else if (m_ui.outlineIntensity->value() != m_internalSettings->outlineIntensity()) {
++    } else if (m_ui.outlineIntensity->currentIndex() != m_internalSettings->outlineIntensity()) {
+         modified = true;
+ 
+         // exceptions
+diff --git a/kdecoration/config/ui/breezeconfigurationui.ui b/kdecoration/config/ui/breezeconfigurationui.ui
+index 3385c97e9..e0283c93a 100644
+--- a/kdecoration/config/ui/breezeconfigurationui.ui
++++ b/kdecoration/config/ui/breezeconfigurationui.ui
+@@ -304,28 +304,32 @@
+         </widget>
+        </item>
+        <item row="3" column="1">
+-        <widget class="QSlider" name="outlineIntensity">
+-         <property name="minimum">
+-          <number>110</number>
+-         </property>
+-         <property name="maximum">
+-          <number>250</number>
+-         </property>
+-         <property name="singleStep">
+-          <number>20</number>
+-         </property>
+-         <property name="pageStep">
+-          <number>20</number>
+-         </property>
+-         <property name="orientation">
+-          <enum>Qt::Horizontal</enum>
+-         </property>
+-         <property name="tickPosition">
+-          <enum>QSlider::TicksBelow</enum>
+-         </property>
+-         <property name="tickInterval">
+-          <number>20</number>
+-         </property>
++        <widget class="QComboBox" name="outlineIntensity">
++         <item>
++          <property name="text">
++           <string comment="@item:inlistbox Outline intensity:">Off</string>
++          </property>
++         </item>
++         <item>
++          <property name="text">
++           <string comment="@item:inlistbox Outline intensity:">Low</string>
++          </property>
++         </item>
++         <item>
++          <property name="text">
++           <string comment="@item:inlistbox Outline intensity:">Medium</string>
++          </property>
++         </item>
++         <item>
++          <property name="text">
++           <string comment="@item:inlistbox Outline intensity:">High</string>
++          </property>
++         </item>
++         <item>
++          <property name="text">
++           <string comment="@item:inlistbox Outline intensity:">Maximum</string>
++          </property>
++         </item>
+         </widget>
+        </item>
+        <item row="4" column="0" colspan="3">
+-- 
+GitLab
+
+
+From 2a41e807948af3cca43af814323f6d6e5295fb93 Mon Sep 17 00:00:00 2001
+From: Akseli Lahtinen <akselmo@akselmo.dev>
+Date: Fri, 3 Mar 2023 00:49:14 +0200
+Subject: [PATCH 6/7] rename shadow tab to shadows and outline
+
+---
+ kdecoration/config/ui/breezeconfigurationui.ui | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/kdecoration/config/ui/breezeconfigurationui.ui b/kdecoration/config/ui/breezeconfigurationui.ui
+index e0283c93a..a760f7b71 100644
+--- a/kdecoration/config/ui/breezeconfigurationui.ui
++++ b/kdecoration/config/ui/breezeconfigurationui.ui
+@@ -193,13 +193,13 @@
+      </widget>
+      <widget class="QWidget" name="tab_4">
+       <attribute name="title">
+-       <string>Shadows</string>
++       <string>Shadows and Outline</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout">
+        <item row="0" column="0">
+         <widget class="QLabel" name="label">
+          <property name="text">
+-          <string>Si&amp;ze:</string>
++          <string>Shadow size:</string>
+          </property>
+          <property name="alignment">
+           <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+@@ -241,7 +241,7 @@
+        <item row="1" column="0">
+         <widget class="QLabel" name="label_2">
+          <property name="text">
+-          <string comment="strength of the shadow (from transparent to opaque)">S&amp;trength:</string>
++          <string comment="strength of the shadow (from transparent to opaque)">Shadow strength:</string>
+          </property>
+          <property name="alignment">
+           <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+@@ -280,7 +280,7 @@
+        <item row="2" column="0">
+         <widget class="QLabel" name="label_5">
+          <property name="text">
+-          <string>Color:</string>
++          <string>Shadow color:</string>
+          </property>
+          <property name="alignment">
+           <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+-- 
+GitLab
+
+
+From d66927cb4994e91052f4e2441309e9354762d59c Mon Sep 17 00:00:00 2001
+From: Nate Graham <nate@kde.org>
+Date: Fri, 3 Mar 2023 20:17:54 +0000
+Subject: [PATCH 7/7] change 110 to 100
+
+---
+ kdecoration/breezedecoration.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/kdecoration/breezedecoration.cpp b/kdecoration/breezedecoration.cpp
+index eb4a7d0ec..410943f2a 100644
+--- a/kdecoration/breezedecoration.cpp
++++ b/kdecoration/breezedecoration.cpp
+@@ -841,7 +841,7 @@ QSharedPointer<KDecoration2::DecorationShadow> Decoration::createShadowObject(co
+     painter.drawRoundedRect(innerRect, m_scaledCornerRadius + 0.5, m_scaledCornerRadius + 0.5);
+ 
+     // Draw window outline
+-    if (lookupOutlineIntensity(m_internalSettings->outlineIntensity()) > 110) {
++    if (lookupOutlineIntensity(m_internalSettings->outlineIntensity()) > 100) {
+         const qreal outlineWidth = 1.001;
+         const qreal penOffset = outlineWidth / 2;
+ 
+-- 
+GitLab
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kde-plasma/breeze/metadata.xml	Thu Apr 27 11:00:03 2023 +0000
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+	<use>
+		<flag name="patch_outline">makes window border outline configurable (Breeze MR 292)</flag>
+	</use>
+</pkgmetadata>