summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sturmlechner <asturm@gentoo.org>2022-05-17 20:36:47 +0200
committerAndreas Sturmlechner <asturm@gentoo.org>2022-05-17 21:01:49 +0200
commit4a9df068d846b2e6c60ccef203a71a92eb6fd9e5 (patch)
treebd2194e410aa9bc9ac0184afb7e59ac99692b5ec /kde-plasma/plasma-workspace/files
parentkde-plasma/kwin: Backport several 5.24.6 fixes (diff)
downloadgentoo-4a9df068d846b2e6c60ccef203a71a92eb6fd9e5.tar.gz
gentoo-4a9df068d846b2e6c60ccef203a71a92eb6fd9e5.tar.bz2
gentoo-4a9df068d846b2e6c60ccef203a71a92eb6fd9e5.zip
kde-plasma/plasma-workspace: Backport several 5.24.6 fixes
Package-Manager: Portage-3.0.30, Repoman-3.0.3 Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'kde-plasma/plasma-workspace/files')
-rw-r--r--kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-applets-appmenu-fix-top-level-menu-text-coloration.patch40
-rw-r--r--kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-applets-kicker-refresh-RootModel-on-session-backend.patch92
-rw-r--r--kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-applets-systemtray-prefer-IconName-over-IconPixmap.patch137
-rw-r--r--kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-fix-plasmashell-crash-on-panel-w-systray-remove.patch34
-rw-r--r--kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-kcms-desktoptheme-detect-installed-styles-1.patch41
-rw-r--r--kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-kcms-desktoptheme-detect-installed-styles-2.patch72
-rw-r--r--kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-sddm-theme-KeyboardButton-fix-layout-name.patch39
-rw-r--r--kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-wallpapers-image-fix-missing-folder-action-buttons.patch30
8 files changed, 485 insertions, 0 deletions
diff --git a/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-applets-appmenu-fix-top-level-menu-text-coloration.patch b/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-applets-appmenu-fix-top-level-menu-text-coloration.patch
new file mode 100644
index 000000000000..d61877300d27
--- /dev/null
+++ b/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-applets-appmenu-fix-top-level-menu-text-coloration.patch
@@ -0,0 +1,40 @@
+From 4d3f99558cff95259590e70dfbf854a479f772ce Mon Sep 17 00:00:00 2001
+From: Nate Graham <nate@kde.org>
+Date: Wed, 4 May 2022 10:45:52 -0600
+Subject: [PATCH 2/8] applets/appmenu: fix top-level menu text coloration
+
+28537cf3ff3cd9210f7568f40334ac3a2c9bed18 made the color dynamic, but
+neglected to respect the Plasma color scheme, if any. This causes
+problems with Plasma themes that have their own colors and don't
+respect the systemwide color scheme, such as Breeze Twilight.
+
+Fix it by using the appropriate colors from the PlasmaCore color scheme
+object, not the systemwide object provided by Qt.
+
+BUG: 453348
+FIXED-IN: 5.24.6
+
+
+(cherry picked from commit 19d9bc7e395d8c6e007afdc3b3b5c11a7d02190e)
+---
+ applets/appmenu/package/contents/ui/MenuDelegate.qml | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/applets/appmenu/package/contents/ui/MenuDelegate.qml b/applets/appmenu/package/contents/ui/MenuDelegate.qml
+index 441e99016..afb37589a 100644
+--- a/applets/appmenu/package/contents/ui/MenuDelegate.qml
++++ b/applets/appmenu/package/contents/ui/MenuDelegate.qml
+@@ -66,9 +66,6 @@ AbstractButton {
+
+ contentItem: PC3.Label {
+ text: controlRoot.Kirigami.MnemonicData.richTextLabel
+- // Kirigami.Theme.highlightedTextColor returns different colors
+- // depending on window focus, which does not apply to this applet
+- // instead, we use palette.highlightedText here, which returns consistent result
+- color: background.state == MenuDelegate.State.Rest ? palette.windowText : palette.highlightedText
++ color: background.state == MenuDelegate.State.Rest ? PlasmaCore.Theme.textColor : PlasmaCore.Theme.highlightedTextColor
+ }
+ }
+--
+2.35.1
+
diff --git a/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-applets-kicker-refresh-RootModel-on-session-backend.patch b/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-applets-kicker-refresh-RootModel-on-session-backend.patch
new file mode 100644
index 000000000000..8cffd8d372ed
--- /dev/null
+++ b/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-applets-kicker-refresh-RootModel-on-session-backend.patch
@@ -0,0 +1,92 @@
+From d0340868619c26de5892f8bd095456dc5a32d0ce Mon Sep 17 00:00:00 2001
+From: Amy Rose <amy@fluff.tech>
+Date: Tue, 17 May 2022 07:38:03 +0000
+Subject: [PATCH 8/8] applets/kicker: refresh RootModel on session backend
+ state change
+
+BUG: 427530
+
+Hunting this one down since mid-March...
+
+In "native" Plasma containments like the panel, desktop, and plasmawindowed, the `LogindSessionBackend` in `libkworkspace` enters the "Ready" state nearly instantly, before any signals can even be attached. In other containments like Latte Dock and plasmoidviewer, however, the initialization takes some time to complete (unsure why). RootModel was not watching or waiting to check what the session backend's state was, resulting in validity checks being done too soon and never checked again.
+
+
+(cherry picked from commit 2cc819f39bcce9ca83ab3767c42beb1e500e55b1)
+---
+ applets/kicker/plugin/rootmodel.cpp | 1 +
+ applets/kicker/plugin/systementry.cpp | 1 +
+ applets/kicker/plugin/systementry.h | 1 +
+ applets/kicker/plugin/systemmodel.cpp | 2 ++
+ applets/kicker/plugin/systemmodel.h | 3 +++
+ 5 files changed, 8 insertions(+)
+
+diff --git a/applets/kicker/plugin/rootmodel.cpp b/applets/kicker/plugin/rootmodel.cpp
+index 4ec323683..837108744 100644
+--- a/applets/kicker/plugin/rootmodel.cpp
++++ b/applets/kicker/plugin/rootmodel.cpp
+@@ -449,6 +449,7 @@ void RootModel::refresh()
+ }
+
+ m_systemModel = new SystemModel(this);
++ QObject::connect(m_systemModel, &SystemModel::sessionManagementStateChanged, this, &RootModel::refresh);
+
+ if (m_showPowerSession) {
+ m_entryList << new GroupEntry(this, i18n("Power / Session"), QStringLiteral("system-log-out"), m_systemModel);
+diff --git a/applets/kicker/plugin/systementry.cpp b/applets/kicker/plugin/systementry.cpp
+index fdd86ece3..939e2119e 100644
+--- a/applets/kicker/plugin/systementry.cpp
++++ b/applets/kicker/plugin/systementry.cpp
+@@ -79,6 +79,7 @@ void SystemEntry::refresh()
+ {
+ if (!s_sessionManagement) {
+ s_sessionManagement = new SessionManagement();
++ QObject::connect(s_sessionManagement, &SessionManagement::stateChanged, this, &SystemEntry::sessionManagementStateChanged);
+ }
+
+ bool valid = false;
+diff --git a/applets/kicker/plugin/systementry.h b/applets/kicker/plugin/systementry.h
+index a0a258024..981a3a5f5 100644
+--- a/applets/kicker/plugin/systementry.h
++++ b/applets/kicker/plugin/systementry.h
+@@ -54,6 +54,7 @@ public:
+
+ Q_SIGNALS:
+ void isValidChanged() const;
++ void sessionManagementStateChanged();
+
+ private Q_SLOTS:
+ void refresh();
+diff --git a/applets/kicker/plugin/systemmodel.cpp b/applets/kicker/plugin/systemmodel.cpp
+index 656bbdc4e..844f80d09 100644
+--- a/applets/kicker/plugin/systemmodel.cpp
++++ b/applets/kicker/plugin/systemmodel.cpp
+@@ -92,10 +92,12 @@ void SystemModel::populate()
+
+ auto addIfValid = [=](const SystemEntry::Action action) {
+ SystemEntry *entry = new SystemEntry(this, action);
++ QObject::connect(entry, &SystemEntry::sessionManagementStateChanged, this, &SystemModel::sessionManagementStateChanged);
+
+ if (entry->isValid()) {
+ m_entries << entry;
+ }
++
+ QObject::connect(entry, &SystemEntry::isValidChanged, this, &AbstractModel::refresh, Qt::UniqueConnection);
+ };
+
+diff --git a/applets/kicker/plugin/systemmodel.h b/applets/kicker/plugin/systemmodel.h
+index cd9048de1..29ae9e428 100644
+--- a/applets/kicker/plugin/systemmodel.h
++++ b/applets/kicker/plugin/systemmodel.h
+@@ -25,6 +25,9 @@ public:
+
+ Q_INVOKABLE bool trigger(int row, const QString &actionId, const QVariant &argument) override;
+
++Q_SIGNALS:
++ void sessionManagementStateChanged();
++
+ protected Q_SLOTS:
+ void refresh() override;
+
+--
+2.35.1
+
diff --git a/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-applets-systemtray-prefer-IconName-over-IconPixmap.patch b/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-applets-systemtray-prefer-IconName-over-IconPixmap.patch
new file mode 100644
index 000000000000..0ac8ed788ade
--- /dev/null
+++ b/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-applets-systemtray-prefer-IconName-over-IconPixmap.patch
@@ -0,0 +1,137 @@
+From ea2833e4dd7114f8bf22a322a26c6c05ebf767f2 Mon Sep 17 00:00:00 2001
+From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
+Date: Mon, 25 Apr 2022 21:58:58 +0300
+Subject: [PATCH 3/8] applets/systemtray: Prefer IconName over IconPixmap
+
+In case both IconName and IconPixmap are provided, the system tray
+applet is going to prefer the pixmap.
+
+That can create a dark icon on dark background bug because plasma can't
+recolor pixmaps.
+
+The SNI spec recommends visualizations to prefer icons over pixmaps:
+
+> An icon can either be identified by its Freedesktop-compliant icon
+> name, carried by this property of by the icon data itself, carried by
+> the property IconPixmap. Visualizations are encouraged to prefer icon
+> names over icon pixmaps if both are available (FIXME: still not very
+> defined: could e the pixmap used as fallback if an icon name is not found?)
+
+BUG: 418996
+
+- Unset iconName when icon can't be loaded
+- no code duplication
+(cherry picked from commit 7363d0e0f3c1a447e6264e92762735bd33da2682)
+---
+ .../systemtray/statusnotifieritemsource.cpp | 82 ++++++++-----------
+ 1 file changed, 33 insertions(+), 49 deletions(-)
+
+diff --git a/applets/systemtray/statusnotifieritemsource.cpp b/applets/systemtray/statusnotifieritemsource.cpp
+index f67845e42..731aecadc 100644
+--- a/applets/systemtray/statusnotifieritemsource.cpp
++++ b/applets/systemtray/statusnotifieritemsource.cpp
+@@ -286,68 +286,52 @@ void StatusNotifierItemSource::refreshCallback(QDBusPendingCallWatcher *call)
+ QIcon overlay;
+ QStringList overlayNames;
+
+- // Icon
++ // Overlay icon
+ {
+- KDbusImageVector image;
+- QIcon icon;
+- QString iconName;
+-
+- properties[QStringLiteral("OverlayIconPixmap")].value<QDBusArgument>() >> image;
+- if (image.isEmpty()) {
+- QString iconName = properties[QStringLiteral("OverlayIconName")].toString();
+- m_overlayIconName = iconName;
+- if (!iconName.isEmpty()) {
++ m_overlayIconName = QString();
++
++ const QString iconName = properties[QStringLiteral("OverlayIconName")].toString();
++ if (!iconName.isEmpty()) {
++ overlay = QIcon(new KIconEngine(iconName, iconLoader()));
++ if (!overlay.isNull()) {
++ m_overlayIconName = iconName;
+ overlayNames << iconName;
+- overlay = QIcon(new KIconEngine(iconName, iconLoader()));
+ }
+- } else {
+- overlay = imageVectorToPixmap(image);
+ }
++ if (overlay.isNull()) {
++ KDbusImageVector image;
++ properties[QStringLiteral("OverlayIconPixmap")].value<QDBusArgument>() >> image;
++ if (!image.isEmpty()) {
++ overlay = imageVectorToPixmap(image);
++ }
++ }
++ }
+
+- properties[QStringLiteral("IconPixmap")].value<QDBusArgument>() >> image;
+- if (image.isEmpty()) {
+- iconName = properties[QStringLiteral("IconName")].toString();
+- if (!iconName.isEmpty()) {
+- icon = QIcon(new KIconEngine(iconName, iconLoader(), overlayNames));
+-
+- if (overlayNames.isEmpty() && !overlay.isNull()) {
++ auto loadIcon = [this, &properties, &overlay, &overlayNames](const QString &iconKey, const QString &pixmapKey) -> std::tuple<QIcon, QString> {
++ const QString iconName = properties[iconKey].toString();
++ if (!iconName.isEmpty()) {
++ QIcon icon = QIcon(new KIconEngine(iconName, iconLoader(), overlayNames));
++ if (!icon.isNull()) {
++ if (!overlay.isNull() && overlayNames.isEmpty()) {
+ overlayIcon(&icon, &overlay);
+ }
++ return {icon, iconName};
+ }
+- } else {
+- icon = imageVectorToPixmap(image);
++ }
++ KDbusImageVector image;
++ properties[pixmapKey].value<QDBusArgument>() >> image;
++ if (!image.isEmpty()) {
++ QIcon icon = imageVectorToPixmap(image);
+ if (!icon.isNull() && !overlay.isNull()) {
+ overlayIcon(&icon, &overlay);
+ }
++ return {icon, QString()};
+ }
+- m_icon = icon;
+- m_iconName = iconName;
+- }
++ return {};
++ };
+
+- // Attention icon
+- {
+- KDbusImageVector image;
+- QIcon attentionIcon;
+-
+- properties[QStringLiteral("AttentionIconPixmap")].value<QDBusArgument>() >> image;
+- if (image.isEmpty()) {
+- QString iconName = properties[QStringLiteral("AttentionIconName")].toString();
+- m_attentionIconName = iconName;
+- if (!iconName.isEmpty()) {
+- attentionIcon = QIcon(new KIconEngine(iconName, iconLoader(), overlayNames));
+-
+- if (overlayNames.isEmpty() && !overlay.isNull()) {
+- overlayIcon(&attentionIcon, &overlay);
+- }
+- }
+- } else {
+- attentionIcon = imageVectorToPixmap(image);
+- if (!attentionIcon.isNull() && !overlay.isNull()) {
+- overlayIcon(&attentionIcon, &overlay);
+- }
+- }
+- m_attentionIcon = attentionIcon;
+- }
++ std::tie(m_icon, m_iconName) = loadIcon(QStringLiteral("IconName"), QStringLiteral("IconPixmap"));
++ std::tie(m_attentionIcon, m_attentionIconName) = loadIcon(QStringLiteral("AttentionIconName"), QStringLiteral("AttentionIconPixmap"));
+
+ // ToolTip
+ {
+--
+2.35.1
+
diff --git a/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-fix-plasmashell-crash-on-panel-w-systray-remove.patch b/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-fix-plasmashell-crash-on-panel-w-systray-remove.patch
new file mode 100644
index 000000000000..609ab0f011cd
--- /dev/null
+++ b/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-fix-plasmashell-crash-on-panel-w-systray-remove.patch
@@ -0,0 +1,34 @@
+From 7795e5fb4f7e2a79e15a9e5711149f71144e73c9 Mon Sep 17 00:00:00 2001
+From: Fushan Wen <qydwhotmail@gmail.com>
+Date: Fri, 13 May 2022 14:43:44 +0800
+Subject: [PATCH 5/8] applets/systemtray: disconnect KConfigLoader signal when
+ instance is about to be deleted
+
+When an applet is about to be deleted, it will save its config
+automatically, but in this case the system tray doesn't need to load the
+config again.
+
+BUG: 453726
+
+
+(cherry picked from commit 6da91d053b4f142277d60db4a1a17eded9249d11)
+---
+ applets/systemtray/systemtray.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/applets/systemtray/systemtray.cpp b/applets/systemtray/systemtray.cpp
+index 3b7f688a6..0d889b3f0 100644
+--- a/applets/systemtray/systemtray.cpp
++++ b/applets/systemtray/systemtray.cpp
+@@ -40,6 +40,8 @@ SystemTray::SystemTray(QObject *parent, const KPluginMetaData &data, const QVari
+
+ SystemTray::~SystemTray()
+ {
++ // When the applet is about to be deleted, delete now to avoid calling loadConfig()
++ delete m_settings;
+ }
+
+ void SystemTray::init()
+--
+2.35.1
+
diff --git a/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-kcms-desktoptheme-detect-installed-styles-1.patch b/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-kcms-desktoptheme-detect-installed-styles-1.patch
new file mode 100644
index 000000000000..57477173acbb
--- /dev/null
+++ b/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-kcms-desktoptheme-detect-installed-styles-1.patch
@@ -0,0 +1,41 @@
+From 1a966d3fb979cf0f0080c805aed248ee77978800 Mon Sep 17 00:00:00 2001
+From: Fushan Wen <qydwhotmail@gmail.com>
+Date: Mon, 16 May 2022 16:18:00 +0800
+Subject: [PATCH 6/8] kcms/desktoptheme: find metadata.json when loading
+ ThemesModel
+
+Before this commit ThemesModel only finds metadata.desktop, but after
+KF5.94, the default theme metadata files have been ported to json format.
+
+BUG: 453830
+
+
+(cherry picked from commit 10aa9bb8dca91e92e3009ed57613d43d610da63e)
+---
+ kcms/desktoptheme/themesmodel.cpp | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/kcms/desktoptheme/themesmodel.cpp b/kcms/desktoptheme/themesmodel.cpp
+index 6f0ecf4e3..296951742 100644
+--- a/kcms/desktoptheme/themesmodel.cpp
++++ b/kcms/desktoptheme/themesmodel.cpp
+@@ -155,7 +155,15 @@ void ThemesModel::load()
+ const QDir cd(ppath);
+ const QStringList &entries = cd.entryList(QDir::Dirs | QDir::Hidden | QDir::NoDotAndDotDot);
+ for (const QString &pack : entries) {
+- const QString _metadata = ppath + QLatin1Char('/') + pack + QStringLiteral("/metadata.desktop");
++ const QString prefix = QStringLiteral("%1%2%3%4metadata.").arg(ppath, QDir::separator(), pack, QDir::separator());
++
++ QString _metadata = QStringLiteral("%1json").arg(prefix);
++ if (QFile::exists(_metadata)) {
++ themes << _metadata;
++ continue;
++ }
++
++ _metadata = QStringLiteral("%1desktop").arg(prefix);
+ if (QFile::exists(_metadata)) {
+ themes << _metadata;
+ }
+--
+2.35.1
+
diff --git a/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-kcms-desktoptheme-detect-installed-styles-2.patch b/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-kcms-desktoptheme-detect-installed-styles-2.patch
new file mode 100644
index 000000000000..2a379c707efe
--- /dev/null
+++ b/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-kcms-desktoptheme-detect-installed-styles-2.patch
@@ -0,0 +1,72 @@
+From c602c52578da1331d2466ff9803c7e0b9287c24c Mon Sep 17 00:00:00 2001
+From: Alexander Lohnau <alexander.lohnau@gmx.de>
+Date: Mon, 16 May 2022 14:49:46 +0200
+Subject: [PATCH 7/8] kcms/desktoptheme: Fix reading of metadata in ThemesModel
+
+We can not use KConfig to read the desktop file.
+
+CCBUG: 453830
+
+
+(cherry picked from commit 43ae993da35bb408b4fabb5c4514feff97628e0d)
+---
+ kcms/desktoptheme/themesmodel.cpp | 27 +++++++++++++++++++--------
+ 1 file changed, 19 insertions(+), 8 deletions(-)
+
+diff --git a/kcms/desktoptheme/themesmodel.cpp b/kcms/desktoptheme/themesmodel.cpp
+index 296951742..ce3cac14b 100644
+--- a/kcms/desktoptheme/themesmodel.cpp
++++ b/kcms/desktoptheme/themesmodel.cpp
+@@ -16,6 +16,7 @@
+
+ #include <KColorScheme>
+ #include <KDesktopFile>
++#include <KPluginMetaData>
+
+ #include <KConfigGroup>
+ #include <KSharedConfig>
+@@ -176,15 +177,25 @@ void ThemesModel::load()
+ int themeNameSepIndex = themeRoot.lastIndexOf(QLatin1Char('/'), -1);
+ const QString packageName = themeRoot.right(themeRoot.length() - themeNameSepIndex - 1);
+
+- KDesktopFile df(theme);
++ QString name;
++ QString comment;
+
+- if (df.noDisplay()) {
+- continue;
+- }
++ if (theme.endsWith(QLatin1String(".json"))) {
++ KPluginMetaData data = KPluginMetaData::fromJsonFile(theme);
++ name = data.name();
++ comment = data.description();
++ } else {
++ KDesktopFile df(theme);
+
+- QString name = df.readName();
+- if (name.isEmpty()) {
+- name = packageName;
++ if (df.noDisplay()) {
++ continue;
++ }
++
++ name = df.readName();
++ if (name.isEmpty()) {
++ name = packageName;
++ }
++ comment = df.readComment();
+ }
+ const bool isLocal = QFileInfo(theme).isWritable();
+ bool hasPluginName = std::any_of(m_data.begin(), m_data.end(), [&](const ThemesModelData &item) {
+@@ -205,7 +216,7 @@ void ThemesModel::load()
+ type = LightTheme;
+ }
+ }
+- ThemesModelData item{name, packageName, df.readComment(), type, isLocal, false};
++ ThemesModelData item{name, packageName, comment, type, isLocal, false};
+ m_data.append(item);
+ }
+ }
+--
+2.35.1
+
diff --git a/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-sddm-theme-KeyboardButton-fix-layout-name.patch b/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-sddm-theme-KeyboardButton-fix-layout-name.patch
new file mode 100644
index 000000000000..594efe7df172
--- /dev/null
+++ b/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-sddm-theme-KeyboardButton-fix-layout-name.patch
@@ -0,0 +1,39 @@
+From e2b631d43528c3e41d53c8a359b6129c616bc271 Mon Sep 17 00:00:00 2001
+From: ivan tkachenko <me@ratijas.tk>
+Date: Sat, 30 Apr 2022 03:20:11 +0300
+Subject: [PATCH 1/8] [sddm-theme] KeyboardButton: Fix layout name not being
+ shown
+
+It used to cause an error like this:
+
+ [03:21:31.246] (WW) GREETER: file:///usr/share/sddm/themes/breeze/KeyboardButton.qml:19: TypeError: Cannot read property 'shortName' of null
+
+(cherry picked from commit 2e9020ca6c1d55842a4b014623f0d88697972000)
+---
+ sddm-theme/KeyboardButton.qml | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/sddm-theme/KeyboardButton.qml b/sddm-theme/KeyboardButton.qml
+index d5d5a446c..712096d87 100644
+--- a/sddm-theme/KeyboardButton.qml
++++ b/sddm-theme/KeyboardButton.qml
+@@ -10,7 +10,7 @@ PlasmaComponents.ToolButton {
+
+ property int currentIndex: -1
+
+- text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Keyboard Layout: %1", instantiator.objectAt(currentIndex).shortName)
++ text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Keyboard Layout: %1", keyboard.layouts[currentIndex].shortName)
+ implicitWidth: minimumWidth
+
+ visible: menu.items.length > 1
+@@ -27,7 +27,6 @@ PlasmaComponents.ToolButton {
+ onObjectRemoved: keyboardMenu.removeItem( object )
+ delegate: QQC.MenuItem {
+ text: modelData.longName
+- property string shortName: modelData.shortName
+ onTriggered: {
+ keyboard.currentLayout = model.index
+ }
+--
+2.35.1
+
diff --git a/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-wallpapers-image-fix-missing-folder-action-buttons.patch b/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-wallpapers-image-fix-missing-folder-action-buttons.patch
new file mode 100644
index 000000000000..d09b60ce6ce4
--- /dev/null
+++ b/kde-plasma/plasma-workspace/files/plasma-workspace-5.24.5-wallpapers-image-fix-missing-folder-action-buttons.patch
@@ -0,0 +1,30 @@
+From dd8f1b5e302717c84f6a05af36c621122ead6d99 Mon Sep 17 00:00:00 2001
+From: Fushan Wen <qydwhotmail@gmail.com>
+Date: Fri, 6 May 2022 21:36:09 +0800
+Subject: [PATCH 4/8] wallpapers/image: Fix missing folder action buttons
+
+The width of the action area needs to be substracted in contentItem's
+width.
+
+Also use `Kirigami.Units.gridUnit * 4` because `overlayWidth` was
+introduced in Frameworks 5.94, and people using Plasma 5.24 may have an
+older Frameworks version.
+---
+ wallpapers/image/imagepackage/contents/ui/config.qml | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/wallpapers/image/imagepackage/contents/ui/config.qml b/wallpapers/image/imagepackage/contents/ui/config.qml
+index 97f9f81a5..7bb675f23 100644
+--- a/wallpapers/image/imagepackage/contents/ui/config.qml
++++ b/wallpapers/image/imagepackage/contents/ui/config.qml
+@@ -331,6 +331,7 @@ ColumnLayout {
+ // Don't need a highlight or hover effects
+ hoverEnabled: false
+ contentItem: Kirigami.BasicListItem {
++ width: slidePathsView.width - (parent.hasOwnProperty("overlayWidth") ? overlayWidth : Kirigami.Units.gridUnit * 4)
+ // Don't need a highlight or hover effects
+ hoverEnabled: false
+ separatorVisible: false
+--
+2.35.1
+