Bug#1109693: unblock: plasma-workspace/4:6.3.6-2
Package: release.debian.org
Severity: normal
X-Debbugs-Cc: plasma-workspace@packages.debian.org, Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org>
Control: affects -1 + src:plasma-workspace
User: release.debian.org@packages.debian.org
Usertags: unblock
Dear Release Team,
please unblock package plasma-workspace.
[ Reason ]
It contains the following changes:
* New upstream release (6.3.6).
- Weather/envcan: Adapt to the new locations list URL.
- Weather/envcan: Fix handling of non-continuous hourly folder list.
- Dataengines/weather: Adapt to the new dynamic URLs on envcan.
- RunCommand: fix "hide faded completion text" calculation. (kde#505698)
- Klipper: make "Add Actions" dialog only window-modal. (kde#501938)
- Fix cell height calc in resize handle.
- Applets/notifications: Don't set a parent for
WidgetsAskUserActionHandler. (kde#504385)
- Components/sessionprivate: fix a potential crash in SessionsModel.
- Libnotificationmanager: fix critical notifications not showing when Do
not disturb is active.
- Applets/devicenotifier: fix pointless mount action. (kde#503999)
- Colorsapplicator: Don't allow extended RGB from OKLabToLinearSRGB.
(kde#503394)
* Drop backported patches now part of the upstream release.
* Refresh patches.
* Backport upstream commits:
- Fix fallback name for task manager icons for programs with Comment
property missing in the desktop file. [45784326] (kde#504431)
- Fix crash in system settings when removing /usr/share as a wallpaper
directory. [e9fd71d9] (kde#503593)
- Fix multiple instances of Plasma shell crash when trying to stop it from
going to sleep. [88911e82] (kde#487660)
- Do not track cache partitions with freespacenotifier. [01978f58]
(kde#504423)
- Do not show logout screen on power button press when in lockscreen /
screensaver. [f1605df4] (kde#504575)
- Fix holding mouse to scroll inside desktop widgets unexpectedly entering
edit mode. [8e6b79da] (kde#416909)
- Fix "move to activity" when there are only 2 activities. [e2ae8f54]
(kde#483148)
- applets/kicker: fix filenames containing # missing from history
[ab55c53e] (kde#419449, kde#437960)
- Klipper: Remove local Configure Klipper action that conflicts
with global shortcuts. [d286dce3] (kde#501632)
- Remove unexpected hover icons above user feedback selection labels.
[a3e153b3] (kde#505761)
- Fix unablity to remove/unpin documents/apps from Application Menu after
deleting the document/app from system. [d1896f5a] (kde#402820)
- Fix unchecking "Show date" in clock settings creating an empty gap on
the panel until restarting plasmashell [b2e80af5] (kde#505614)
- Fix systemd services reload reemitting all previous OOM notifications.
[ec837446] (kde#502279)
The complete debdiff is quite big while including translation updates so
I’m attaching a simple diff trimmed down from these for your
convenience :
diff -ur --exclude=po plasma-workspace-6.3.[56]
[ Tests ]
- No regression identified after running Plasma for several days with
the changes.
- The upstream test suite doesn’t regress in sbuild with the same
failures as for 6.3.5 :
The following tests FAILED:
3 - tasksmodeltest (Failed)
5 - xwindowtasksmodeltest (Subprocess aborted)
6 - waylandtasksmodeltest (Failed)
7 - fetchinitialplayertest (Subprocess aborted)
8 - mprisdeclarativetest (Subprocess aborted)
9 - mediakeystest (Failed)
10 - dbusservicewatchertest (Failed)
11 - dbusmethodcalltest (Failed)
12 - screenpooltest (Subprocess aborted)
13 - shelltest (Subprocess aborted)
17 - klippertest (Failed)
18 - klipper_v3migrationtest (Failed)
22 - testchromebookmarks (Failed)
23 - testfirefoxbookmarks (Failed)
29 - keystatetest (Failed)
30 - lockedtest (Not Run)
31 - tst_triangleFilter (Failed)
33 - systemtraymodeltest (Failed)
34 - testimagefinder (Failed)
37 - testimagelistmodel (Failed)
39 - testimageproxymodel (Failed)
40 - testslidemodel (Failed)
42 - testimagebackend (Failed)
43 - testimagefrontend (Failed)
[ Risks ]
Only contains fixes from the upstream point release and backported
patches. Further fixes can easily be backported or the changes reverted.
[ Checklist ]
[x] all changes are documented in the d/changelog
[x] I reviewed all changes and I approve them
[x] attach debdiff against the package in testing
Thanks !
unblock plasma-workspace/4:6.3.6-2
diff -Nru plasma-workspace-6.3.5/applets/devicenotifier/plugin/actions/mountaction.cpp plasma-workspace-6.3.6/applets/devicenotifier/plugin/actions/mountaction.cpp
--- plasma-workspace-6.3.5/applets/devicenotifier/plugin/actions/mountaction.cpp 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/applets/devicenotifier/plugin/actions/mountaction.cpp 2025-07-08 13:48:12.000000000 +0200
@@ -18,6 +18,8 @@
MountAction::MountAction(const QString &udi, QObject *parent)
: ActionInterface(udi, parent)
, m_stateMonitor(DevicesStateMonitor::instance())
+ , m_supportsMTP(false)
+ , m_hasStorageAccess(false)
{
Solid::Device device(udi);
@@ -39,6 +41,15 @@
m_supportsMTP = supportedProtocols.contains(QLatin1String("mtp"));
+ // It's possible for there to be no StorageAccess (e.g. MTP devices don't have one)
+ if (device.is<Solid::StorageAccess>()) {
+ Solid::StorageAccess *access = device.as<Solid::StorageAccess>();
+ if (access) {
+ qCDebug(APPLETS::DEVICENOTIFIER) << "Mount action: have storage access";
+ m_hasStorageAccess = true;
+ }
+ }
+
connect(m_stateMonitor.get(), &DevicesStateMonitor::stateChanged, this, &MountAction::updateIsValid);
}
@@ -67,7 +78,7 @@
bool MountAction::isValid() const
{
- return m_stateMonitor->isRemovable(m_udi) && !m_stateMonitor->isMounted(m_udi) && !m_supportsMTP;
+ return m_hasStorageAccess && m_stateMonitor->isRemovable(m_udi) && !m_stateMonitor->isMounted(m_udi) && !m_supportsMTP;
}
void MountAction::updateIsValid(const QString &udi)
diff -Nru plasma-workspace-6.3.5/applets/devicenotifier/plugin/actions/mountaction.h plasma-workspace-6.3.6/applets/devicenotifier/plugin/actions/mountaction.h
--- plasma-workspace-6.3.5/applets/devicenotifier/plugin/actions/mountaction.h 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/applets/devicenotifier/plugin/actions/mountaction.h 2025-07-08 13:48:12.000000000 +0200
@@ -33,6 +33,7 @@
private:
bool m_supportsMTP;
+ bool m_hasStorageAccess;
std::shared_ptr<DevicesStateMonitor> m_stateMonitor;
};
diff -Nru plasma-workspace-6.3.5/applets/notifications/filemenu.cpp plasma-workspace-6.3.6/applets/notifications/filemenu.cpp
--- plasma-workspace-6.3.5/applets/notifications/filemenu.cpp 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/applets/notifications/filemenu.cpp 2025-07-08 13:48:12.000000000 +0200
@@ -151,7 +151,8 @@
const bool canTrash = itemProperties.isLocal() && itemProperties.supportsMoving();
if (canTrash) {
auto moveToTrashLambda = [this] {
- auto handler = new KIO::WidgetsAskUserActionHandler(this);
+ // No parent since the FileMenu will be destroyed as soon as the user clicked the menu item.
+ auto handler = new KIO::WidgetsAskUserActionHandler();
connect(handler, &KIO::WidgetsAskUserActionHandler::askUserDeleteResult, [handler](bool allow, const QList<QUrl> &urls) {
if (allow) {
auto job = KIO::trash(urls);
@@ -172,7 +173,8 @@
if (itemProperties.supportsDeleting() && (!canTrash || showDeleteCommand)) {
auto deleteLambda = [this] {
- auto handler = new KIO::WidgetsAskUserActionHandler(this);
+ // No parent since the FileMenu will be destroyed as soon as the user clicked the menu item.
+ auto handler = new KIO::WidgetsAskUserActionHandler();
connect(handler, &KIO::WidgetsAskUserActionHandler::askUserDeleteResult, [handler](bool allow, const QList<QUrl> &urls) {
if (allow) {
auto job = KIO::del(urls);
diff -Nru plasma-workspace-6.3.5/CMakeLists.txt plasma-workspace-6.3.6/CMakeLists.txt
--- plasma-workspace-6.3.5/CMakeLists.txt 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/CMakeLists.txt 2025-07-08 13:48:11.000000000 +0200
@@ -1,13 +1,13 @@
cmake_minimum_required(VERSION 3.16)
project(plasma-workspace)
-set(PROJECT_VERSION "6.3.5")
+set(PROJECT_VERSION "6.3.6")
string(REPLACE "." ";" VERSION_LIST ${PROJECT_VERSION})
list(GET VERSION_LIST 0 PROJECT_VERSION_MAJOR)
list(GET VERSION_LIST 1 PROJECT_VERSION_MINOR)
list(GET VERSION_LIST 2 PROJECT_VERSION_PATCH)
-set(PROJECT_DEP_VERSION "6.3.5")
+set(PROJECT_DEP_VERSION "6.3.6")
set(QT_MIN_VERSION "6.7.0")
set(KF6_MIN_VERSION "6.10.0")
option(PLASMA_X11_DEFAULT_SESSION "Use X11 session by default for Plasma" OFF)
diff -Nru plasma-workspace-6.3.5/components/containmentlayoutmanager/resizehandle.cpp plasma-workspace-6.3.6/components/containmentlayoutmanager/resizehandle.cpp
--- plasma-workspace-6.3.5/components/containmentlayoutmanager/resizehandle.cpp 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/components/containmentlayoutmanager/resizehandle.cpp 2025-07-08 13:48:12.000000000 +0200
@@ -156,7 +156,7 @@
// Now make minimumSize an integer number of cells
minimumSize.setWidth(ceil(minimumSize.width() / layout->cellWidth()) * layout->cellWidth());
- minimumSize.setHeight(ceil(minimumSize.height() / layout->cellWidth()) * layout->cellHeight());
+ minimumSize.setHeight(ceil(minimumSize.height() / layout->cellHeight()) * layout->cellHeight());
// Horizontal resize
if (resizeLeft()) {
diff -Nru plasma-workspace-6.3.5/components/sessionsprivate/sessionsmodel.cpp plasma-workspace-6.3.6/components/sessionsprivate/sessionsmodel.cpp
--- plasma-workspace-6.3.5/components/sessionsprivate/sessionsmodel.cpp 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/components/sessionsprivate/sessionsmodel.cpp 2025-07-08 13:48:12.000000000 +0200
@@ -187,11 +187,11 @@
}
}
-void SessionsModel::checkScreenLocked(const std::function<void(bool)> &cb)
+void SessionsModel::checkScreenLocked(std::function<void(bool)> &&cb)
{
auto reply = m_screensaverInterface->GetActive();
QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this);
- QObject::connect(watcher, &QDBusPendingCallWatcher::finished, this, [cb](QDBusPendingCallWatcher *watcher) {
+ QObject::connect(watcher, &QDBusPendingCallWatcher::finished, this, [cb = std::move(cb)](QDBusPendingCallWatcher *watcher) {
QDBusPendingReply<bool> reply = *watcher;
if (!reply.isError()) {
cb(reply.value());
diff -Nru plasma-workspace-6.3.5/components/sessionsprivate/sessionsmodel.h plasma-workspace-6.3.6/components/sessionsprivate/sessionsmodel.h
--- plasma-workspace-6.3.5/components/sessionsprivate/sessionsmodel.h 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/components/sessionsprivate/sessionsmodel.h 2025-07-08 13:48:12.000000000 +0200
@@ -91,7 +91,7 @@
void aboutToLockScreen();
private:
- void checkScreenLocked(const std::function<void(bool)> &cb);
+ void checkScreenLocked(std::function<void(bool)> &&cb);
KDisplayManager m_displayManager;
diff -Nru plasma-workspace-6.3.5/dataengines/weather/ions/envcan/ion_envcan.cpp plasma-workspace-6.3.6/dataengines/weather/ions/envcan/ion_envcan.cpp
--- plasma-workspace-6.3.5/dataengines/weather/ions/envcan/ion_envcan.cpp 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/dataengines/weather/ions/envcan/ion_envcan.cpp 2025-07-08 13:48:12.000000000 +0200
@@ -17,6 +17,8 @@
#include <QRegularExpression>
#include <QTimeZone>
+using namespace Qt::StringLiterals;
+
WeatherData::WeatherData()
: stationLatitude(qQNaN())
, stationLongitude(qQNaN())
@@ -490,7 +492,7 @@
void EnvCanadaIon::getXMLSetup()
{
// If network is down, we need to spin and wait
- const QUrl url(QStringLiteral("https://dd.weather.gc.ca/citypage_weather/xml/siteList.xml"));
+ const QUrl url(QStringLiteral("https://dd.weather.gc.ca/today/citypage_weather/siteList.xml"));
qCDebug(IONENGINE_ENVCAN) << "Fetching station list:" << url;
KIO::TransferJob *getJob = KIO::get(url, KIO::NoReload, KIO::HideProgressInfo);
@@ -516,7 +518,7 @@
const XMLMapInfo &place = m_places[dataKey];
const QUrl url(QStringLiteral("https://dd.weather.gc.ca/citypage_weather/xml/%1/%2_e.xml").arg(place.territoryName, place.cityCode));
- qCDebug(IONENGINE_ENVCAN) << "Fetching weather URL:" << url;
+ qCDebug(IONENGINE_ENVCAN) << "Fetching legacy weather URL:" << url;
if (place.territoryName.isEmpty() && place.cityCode.isEmpty()) {
setData(source, QStringLiteral("validate"), QStringLiteral("envcan|malformed"));
@@ -532,6 +534,51 @@
connect(getJob, &KJob::result, this, &EnvCanadaIon::slotJobFinished);
}
+// The weather URL has a dynamic name and path depending on its timestamp:
+// https://dd.weather.gc.ca/today/citypage_weather/{PROV}/{HH}/{YYYYMMDD}T{HHmmss.sss}Z_MSC_CitypageWeather_{SiteCode}_en.xml
+// This method is called iteratively 3 times to get the URL and then the weather report
+void EnvCanadaIon::getWeatherData(const QString &source)
+{
+ WeatherData::UrlInfo &info = m_weatherData[source].urlInfo;
+
+ info.requests++;
+ if (info.requests > 3) {
+ qCWarning(IONENGINE_ENVCAN) << "Too many requests to find the weather URL";
+ return;
+ }
+
+ // We get the place info from the stations list
+ if (info.cityCode.isEmpty()) {
+ QString dataKey = source;
+ dataKey.remove(QStringLiteral("envcan|weather|"));
+ const XMLMapInfo &place = m_places[dataKey];
+
+ info.province = place.territoryName;
+ info.cityCode = place.cityCode;
+ }
+
+ // 1. Base URL, on the territory dir, to get the list of hours
+ QString url = u"https://dd.weather.gc.ca/today/citypage_weather/%1/"_s.arg(info.province);
+ // 2. When we know the hour folder, we check for the weather report files
+ if (!info.hours.isEmpty()) {
+ url += info.hours.at(info.hourIndex) + u"/";
+ }
+ // 3. Now we have the full information to compose the URL
+ if (!info.fileName.isEmpty()) {
+ url += info.fileName;
+ }
+
+ qCDebug(IONENGINE_ENVCAN) << "Fetching weather URL:" << url;
+
+ KIO::TransferJob *getJob = KIO::get(QUrl(url), KIO::Reload, KIO::HideProgressInfo);
+
+ m_jobXml.insert(getJob, new QXmlStreamReader);
+ m_jobList.insert(getJob, source);
+
+ connect(getJob, &KIO::TransferJob::data, this, &EnvCanadaIon::slotDataArrived);
+ connect(getJob, &KJob::result, this, &EnvCanadaIon::slotJobFinished);
+}
+
void EnvCanadaIon::setup_slotDataArrived(KIO::Job *job, const QByteArray &data)
{
Q_UNUSED(job)
@@ -550,7 +597,13 @@
return;
}
- // Send to xml.
+ // Remove the HTML doctype line from XML parsing
+ if (data.startsWith("<!DOCTYPE"_ba)) {
+ int newLinePos = data.indexOf('\n');
+ m_jobXml[job]->addData(QByteArrayView(data).slice(newLinePos + 1));
+ return;
+ }
+
m_jobXml[job]->addData(data);
}
@@ -560,10 +613,16 @@
const QString source = m_jobList.value(job);
setData(source, Data());
QXmlStreamReader *reader = m_jobXml.value(job);
- if (reader) {
+ if (!job->error() && reader) {
readXMLData(m_jobList[job], *reader);
}
+ if (job->error() == KIO::ERR_DOES_NOT_EXIST || qobject_cast<KIO::TransferJob *>(job)->isErrorPage()) {
+ qCDebug(IONENGINE_ENVCAN) << "Legacy page not found. Falling back to new API";
+ m_weatherData[source].urlInfo = WeatherData::UrlInfo();
+ getWeatherData(source);
+ }
+
m_jobList.remove(job);
delete m_jobXml[job];
m_jobXml.remove(job);
@@ -686,6 +745,11 @@
if (xml.isStartElement()) {
if (xml.name() == QLatin1String("siteData")) {
parseWeatherSite(data, xml);
+ } else if (xml.name() == QLatin1String("html")) {
+ auto &urlInfo = m_weatherData[source].urlInfo;
+ parseDirListing(urlInfo, xml);
+ getWeatherData(source);
+ return !xml.hasError();
} else {
parseUnknownElement(xml);
}
@@ -733,6 +797,53 @@
return !xml.error();
}
+void EnvCanadaIon::parseDirListing(WeatherData::UrlInfo &info, QXmlStreamReader &xml)
+{
+ const bool expectingFileNames = !info.hours.isEmpty();
+
+ while (!xml.atEnd()) {
+ xml.readNext();
+
+ // We are parsing a directory listing with files or folders as hyperlinks
+ if (xml.isStartElement() && xml.name() == "a"_L1) {
+ QString item = xml.attributes().value(u"href").toString().trimmed();
+
+ // Check for hour folders
+ if (!expectingFileNames && item.endsWith('/'_L1)) {
+ item.slice(0, item.length() - 1);
+
+ bool isHour = false;
+ item.toInt(&isHour);
+ if (isHour) {
+ info.hours.prepend(item);
+ }
+ continue;
+ }
+
+ // Check just for files that match our city code en English language
+ if (item.endsWith(u"%1_en.xml"_s.arg(info.cityCode))) {
+ info.fileName = item;
+ }
+ }
+ }
+
+ // Sort hours in reverse order (more recent first)
+ if (!expectingFileNames && !info.hours.isEmpty()) {
+ std::sort(info.hours.begin(), info.hours.end(), [](const auto &a, const auto &b) {
+ return a.toInt() > b.toInt();
+ });
+ }
+
+ // If we didn't find the filename in the current hour folder
+ // set up a new requests to search it on the previous one
+ if (expectingFileNames && info.fileName.isEmpty()) {
+ if (info.hourIndex < info.hours.count()) {
+ info.hourIndex++;
+ info.requests--;
+ }
+ }
+}
+
void EnvCanadaIon::parseFloat(float &value, QXmlStreamReader &xml)
{
bool ok = false;
diff -Nru plasma-workspace-6.3.5/dataengines/weather/ions/envcan/ion_envcan.h plasma-workspace-6.3.6/dataengines/weather/ions/envcan/ion_envcan.h
--- plasma-workspace-6.3.5/dataengines/weather/ions/envcan/ion_envcan.h 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/dataengines/weather/ions/envcan/ion_envcan.h 2025-07-08 13:48:12.000000000 +0200
@@ -120,6 +120,18 @@
QString solarDataTimeEngineSourceName;
bool isNight = false;
+
+ // Fields to get the forecast url
+ struct UrlInfo {
+ QString province;
+ QString cityCode;
+ QStringList hours;
+ int hourIndex = 0;
+ QString fileName;
+ int requests = 0;
+ };
+
+ UrlInfo urlInfo;
};
Q_DECLARE_TYPEINFO(WeatherData::WeatherEvent, Q_RELOCATABLE_TYPE);
@@ -174,6 +186,11 @@
void getXMLData(const QString &source);
bool readXMLData(const QString &source, QXmlStreamReader &xml);
+ // New API on envcan: need to get a specifically named file
+ void getWeatherData(const QString &source);
+ // Parse a directory listing with files or folders as hyperlinks
+ void parseDirListing(WeatherData::UrlInfo &info, QXmlStreamReader &xml);
+
// Check if place specified is valid or not
QStringList validate(const QString &source) const;
diff -Nru plasma-workspace-6.3.5/debian/changelog plasma-workspace-6.3.6/debian/changelog
--- plasma-workspace-6.3.5/debian/changelog 2025-05-20 08:31:26.000000000 +0200
+++ plasma-workspace-6.3.6/debian/changelog 2025-07-21 18:21:10.000000000 +0200
@@ -1,3 +1,61 @@
+plasma-workspace (4:6.3.6-2) unstable; urgency=medium
+
+ [ Aurélien COUDERC ]
+ * Fix incorrectly encoded libplasma dependency version that breaks
+ builds with our mixed 6.3.x packages in trixie.
+
+ -- Aurélien COUDERC <coucouf@debian.org> Mon, 21 Jul 2025 18:21:10 +0200
+
+plasma-workspace (4:6.3.6-1) unstable; urgency=medium
+
+ [ Aurélien COUDERC ]
+ * New upstream release (6.3.6).
+ - Weather/envcan: Adapt to the new locations list URL.
+ - Weather/envcan: Fix handling of non-continuous hourly folder list.
+ - Dataengines/weather: Adapt to the new dynamic URLs on envcan.
+ - RunCommand: fix "hide faded completion text" calculation. (kde#505698)
+ - Klipper: make "Add Actions" dialog only window-modal. (kde#501938)
+ - Fix cell height calc in resize handle.
+ - Applets/notifications: Don't set a parent for
+ WidgetsAskUserActionHandler. (kde#504385)
+ - Components/sessionprivate: fix a potential crash in SessionsModel.
+ - Libnotificationmanager: fix critical notifications not showing when Do
+ not disturb is active.
+ - Applets/devicenotifier: fix pointless mount action. (kde#503999)
+ - Colorsapplicator: Don't allow extended RGB from OKLabToLinearSRGB.
+ (kde#503394)
+ * Drop backported patches now part of the upstream release.
+ * Refresh patches.
+ * Backport upstream commits:
+ - Fix fallback name for task manager icons for programs with Comment
+ property missing in the desktop file. [45784326] (kde#504431)
+ - Fix crash in system settings when removing /usr/share as a wallpaper
+ directory. [e9fd71d9] (kde#503593)
+ - Fix multiple instances of Plasma shell crash when trying to stop it from
+ going to sleep. [88911e82] (kde#487660)
+ - Do not track cache partitions with freespacenotifier. [01978f58]
+ (kde#504423)
+ - Do not show logout screen on power button press when in lockscreen /
+ screensaver. [f1605df4] (kde#504575)
+ - Fix holding mouse to scroll inside desktop widgets unexpectedly entering
+ edit mode. [8e6b79da] (kde#416909)
+ - Fix "move to activity" when there are only 2 activities. [e2ae8f54]
+ (kde#483148)
+ - applets/kicker: fix filenames containing # missing from history
+ [ab55c53e] (kde#419449, kde#437960)
+ - Klipper: Remove local Configure Klipper action that conflicts
+ with global shortcuts. [d286dce3] (kde#501632)
+ - Remove unexpected hover icons above user feedback selection labels.
+ [a3e153b3] (kde#505761)
+ - Fix unablity to remove/unpin documents/apps from Application Menu after
+ deleting the document/app from system. [d1896f5a] (kde#402820)
+ - Fix unchecking "Show date" in clock settings creating an empty gap on
+ the panel until restarting plasmashell [b2e80af5] (kde#505614)
+ - Fix systemd services reload reemitting all previous OOM notifications.
+ [ec837446] (kde#502279)
+
+ -- Aurélien COUDERC <coucouf@debian.org> Sat, 19 Jul 2025 12:11:47 +0200
+
plasma-workspace (4:6.3.5-1) unstable; urgency=medium
[ Aurélien COUDERC ]
diff -Nru plasma-workspace-6.3.5/debian/patches/fix-incorrect-libplasma-dependency-version.patch plasma-workspace-6.3.6/debian/patches/fix-incorrect-libplasma-dependency-version.patch
--- plasma-workspace-6.3.5/debian/patches/fix-incorrect-libplasma-dependency-version.patch 1970-01-01 01:00:00.000000000 +0100
+++ plasma-workspace-6.3.6/debian/patches/fix-incorrect-libplasma-dependency-version.patch 2025-07-21 18:20:15.000000000 +0200
@@ -0,0 +1,10 @@
+--- a/libcolorcorrect/LibColorCorrectConfig.cmake.in
++++ b/libcolorcorrect/LibColorCorrectConfig.cmake.in
+@@ -3,6 +3,6 @@
+ include(CMakeFindDependencyMacro)
+ find_dependency(Qt6Core "@QT_MIN_VERSION@")
+ find_dependency(Qt6Quick "@QT_MIN_VERSION@")
+-find_dependency(Plasma "@PROJECT_VERSION@")
++find_dependency(Plasma "@PROJECT_DEP_VERSION@")
+
+ include("${CMAKE_CURRENT_LIST_DIR}/LibColorCorrectLibraryTargets.cmake")
diff -Nru plasma-workspace-6.3.5/debian/patches/relax-interplasma-versioned-deps.patch plasma-workspace-6.3.6/debian/patches/relax-interplasma-versioned-deps.patch
--- plasma-workspace-6.3.5/debian/patches/relax-interplasma-versioned-deps.patch 2025-05-16 18:55:16.000000000 +0200
+++ plasma-workspace-6.3.6/debian/patches/relax-interplasma-versioned-deps.patch 2025-07-19 10:24:18.000000000 +0200
@@ -4,7 +4,7 @@
list(GET VERSION_LIST 1 PROJECT_VERSION_MINOR)
list(GET VERSION_LIST 2 PROJECT_VERSION_PATCH)
--set(PROJECT_DEP_VERSION "6.3.5")
+-set(PROJECT_DEP_VERSION "6.3.6")
+set(PROJECT_DEP_VERSION "6.3.4")
set(QT_MIN_VERSION "6.7.0")
set(KF6_MIN_VERSION "6.10.0")
diff -Nru plasma-workspace-6.3.5/debian/patches/series plasma-workspace-6.3.6/debian/patches/series
--- plasma-workspace-6.3.5/debian/patches/series 2025-05-20 08:31:26.000000000 +0200
+++ plasma-workspace-6.3.6/debian/patches/series 2025-07-21 18:18:35.000000000 +0200
@@ -1,3 +1,4 @@
+fix-incorrect-libplasma-dependency-version.patch
relax-interplasma-versioned-deps.patch
upstream_e4e0dee5_libkmpris-allow-MultiplexerModel-to-show-actual-player-name.patch
upstream_4f9b1a69_Fix-Scroll-Wheel-issue-in-AllApps-submenu-of-Application-Dashboard.patch
@@ -14,12 +15,18 @@
upstream_6d12cde3_wallpapers-image-Fix-thumbnails-not-matching-output-size.patch
upstream_8845c001_shell-Osd-Fix-missing-RTL.patch
upstream_142caad0_applets-notification-fix-fullRepresentation-only-widgets.patch
-upstream_32a7cf2a_colorsapplicator-Don-t-allow-extended-RGB-from-OKLabToLinearSRGB.patch
-upstream_60859fa9_applets-devicenotifier-fix-pointless-mount-action.patch
-upstream_7635c551_libnotificationmanager-fix-critical-notifications-not-showing-when-Do-not-disturb-is-active.patch
-upstream_72719edd_components-sessionprivate-fix-a-potential-crash-in-SessionsModel.patch
-upstream_41a554e6_applets-notifications-Don-t-set-a-parent-for-WidgetsAskUserActionHandler.patch
-upstream_2c855c2f_Fix-cell-height-calc-in-resize-handle.patch
-upstream_bf67f256_klipper-make-Add-Actions-dialog-only-window-modal.patch
upstream_d4df9b5f_applets-systemmonitor-handle-null-faceController.patch
upstream_b9bc83c6_applets-systemmonitor-skip-configure-button-on-sensorless-faces.patch
+upstream_45784326_libtaskmanager-show-Comment-for-launcher-icons-when-appropriate.patch
+upstream_e9fd71d9_wallpapers-image-don-t-crash-when-removing-usr-share.patch
+upstream_88911e82_shell-Rearrange-the-teardown-order.patch
+upstream_01978f58_Do-not-track-cache-partitions-with-freespacenotifier.patch
+upstream_f1605df4_Do-not-show-logout-screen-when-in-lockscreen-screensaver.patch
+upstream_8e6b79da_containmentlayoutmanager-don-t-enter-edit-mode-without-activefocus.patch
+upstream_e2ae8f54_libtaskmanager-fix-move-to-activity-when-on-almost-all-activities.patch
+upstream_ab55c53e_applets-kicker-fix-filenames-containing-in-history.patch
+upstream_d286dce3_Klipper-Remove-local-Configure-Klipper-action.patch
+upstream_a4e153b3_kcms-feedback-remove-little-hover-icons.patch
+upstream_d1896f5a_applets-kicker-resolve-non-existing-files-to-their-url.patch
+upstream_b2e80af5_Only-resize-width-to-fit-date-elements-if-they-are-visible.patch
+upstream_ec837446_Do-not-emit-OOM-notifications-on-systemd-services-reload.patch
diff -Nru plasma-workspace-6.3.5/debian/patches/upstream_01978f58_Do-not-track-cache-partitions-with-freespacenotifier.patch plasma-workspace-6.3.6/debian/patches/upstream_01978f58_Do-not-track-cache-partitions-with-freespacenotifier.patch
--- plasma-workspace-6.3.5/debian/patches/upstream_01978f58_Do-not-track-cache-partitions-with-freespacenotifier.patch 1970-01-01 01:00:00.000000000 +0100
+++ plasma-workspace-6.3.6/debian/patches/upstream_01978f58_Do-not-track-cache-partitions-with-freespacenotifier.patch 2025-07-19 10:56:54.000000000 +0200
@@ -0,0 +1,49 @@
+From 01978f583ae1d2878830ccd8b58c4b3e0c39f257 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Niccol=C3=B2=20Venerandi?= <niccolo@venerandi.com>
+Date: Thu, 29 May 2025 07:25:03 +0000
+Subject: [PATCH] Do not track cache partitions with freespacenotifier
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+BUG:504423
+
+
+(cherry picked from commit f4a08099d0aae466f06f0094498cc593c8ce4532)
+
+e033ef89 Do not track cache partitions with freespacenotifier
+5203019a Apply 1 suggestion(s) to 1 file(s)
+
+Co-authored-by: Niccolò Venerandi <niccolo@venerandi.com>
+---
+ freespacenotifier/module.cpp | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/freespacenotifier/module.cpp b/freespacenotifier/module.cpp
+index 3d8e06c0a4..1700a3695d 100644
+--- a/freespacenotifier/module.cpp
++++ b/freespacenotifier/module.cpp
+@@ -19,6 +19,7 @@
+ #include <Solid/StorageVolume>
+
+ #include <QDir>
++#include <QFile>
+
+ #include "kded_interface.h"
+
+@@ -74,7 +75,11 @@ void FreeSpaceNotifierModule::onNewSolidDevice(const QString &udi)
+ if (auto generic = device.as<Solid::GenericInterface>()) {
+ isReadOnly = generic->property(QStringLiteral("ReadOnly")).toBool();
+ }
+- if (isReadOnly) {
++ // Cache devices should be marked through a
++ // CACHEDIR.TAG file to avoid indexing; see
++ // https://bford.info/cachedir/ for reference.
++ const bool isCache = QFile::exists(QDir(access->filePath()).filePath(QStringLiteral("CACHEDIR.TAG")));
++ if (isReadOnly || isCache) {
+ return;
+ }
+
+--
+GitLab
+
diff -Nru plasma-workspace-6.3.5/debian/patches/upstream_2c855c2f_Fix-cell-height-calc-in-resize-handle.patch plasma-workspace-6.3.6/debian/patches/upstream_2c855c2f_Fix-cell-height-calc-in-resize-handle.patch
--- plasma-workspace-6.3.5/debian/patches/upstream_2c855c2f_Fix-cell-height-calc-in-resize-handle.patch 2025-05-20 08:31:26.000000000 +0200
+++ plasma-workspace-6.3.6/debian/patches/upstream_2c855c2f_Fix-cell-height-calc-in-resize-handle.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,33 +0,0 @@
-From 2c855c2fe47ce4ea8ba4fd0edb840f21bb7a9937 Mon Sep 17 00:00:00 2001
-From: Nate Graham <nate@kde.org>
-Date: Thu, 22 May 2025 08:25:05 -0600
-Subject: [PATCH] Fix cell height calc in resize handle
-
-Correct typo using cellWidth() instead of cellHeight() for
-minimum height calculation during vertical resizing. Ensures
-proper cell-aligned sizing behavior.
-
-
-(cherry picked from commit 4b1dfd560433ef89f80b5916d2ac15739c5f91fb)
-
-Co-authored-by: Wang Yu <wangyu@uniontech.com>
----
- components/containmentlayoutmanager/resizehandle.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/components/containmentlayoutmanager/resizehandle.cpp b/components/containmentlayoutmanager/resizehandle.cpp
-index b3b1f673ef0..f840717ecf6 100644
---- a/components/containmentlayoutmanager/resizehandle.cpp
-+++ b/components/containmentlayoutmanager/resizehandle.cpp
-@@ -156,7 +156,7 @@ void ResizeHandle::mouseMoveEvent(QMouseEvent *event)
-
- // Now make minimumSize an integer number of cells
- minimumSize.setWidth(ceil(minimumSize.width() / layout->cellWidth()) * layout->cellWidth());
-- minimumSize.setHeight(ceil(minimumSize.height() / layout->cellWidth()) * layout->cellHeight());
-+ minimumSize.setHeight(ceil(minimumSize.height() / layout->cellHeight()) * layout->cellHeight());
-
- // Horizontal resize
- if (resizeLeft()) {
---
-GitLab
-
diff -Nru plasma-workspace-6.3.5/debian/patches/upstream_32a7cf2a_colorsapplicator-Don-t-allow-extended-RGB-from-OKLabToLinearSRGB.patch plasma-workspace-6.3.6/debian/patches/upstream_32a7cf2a_colorsapplicator-Don-t-allow-extended-RGB-from-OKLabToLinearSRGB.patch
--- plasma-workspace-6.3.5/debian/patches/upstream_32a7cf2a_colorsapplicator-Don-t-allow-extended-RGB-from-OKLabToLinearSRGB.patch 2025-05-20 08:31:26.000000000 +0200
+++ plasma-workspace-6.3.6/debian/patches/upstream_32a7cf2a_colorsapplicator-Don-t-allow-extended-RGB-from-OKLabToLinearSRGB.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,41 +0,0 @@
-From 32a7cf2a06e16d58cbb8c4a0ab08a0832fa377d4 Mon Sep 17 00:00:00 2001
-From: Akseli Lahtinen <akselmo@akselmo.dev>
-Date: Mon, 5 May 2025 21:14:08 +0300
-Subject: [PATCH] colorsapplicator: Don't allow extended RGB from
- OKLabToLinearSRGB
-
-When reading the rgb values in OKLabToLinearSRGB, there is a chance,
-when colors are tinted, for QColor::fromRgbF to return Extended RGB
-colors, which can invert.
-Read more at
-https://doc.qt.io/qt-6/qcolor.html#the-extended-rgb-color-model
-
-Instead, just make sure we always return regular RGB values.
-
-BUG: 503394
-FIXED-IN: 6.3
-
-
-(cherry picked from commit 4329b16a96a47c310e2d2a5da6f7543f94b6d3ec)
-
-Co-authored-by: Akseli Lahtinen <akselmo@akselmo.dev>
----
- kcms/colors/colorsapplicator.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/kcms/colors/colorsapplicator.cpp b/kcms/colors/colorsapplicator.cpp
-index 6f0eeffe666..7d28889de6f 100644
---- a/kcms/colors/colorsapplicator.cpp
-+++ b/kcms/colors/colorsapplicator.cpp
-@@ -100,7 +100,7 @@ QColor OKLabToLinearSRGB(LAB lab)
- const auto g = -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s;
- const auto b = -0.0041960863 * l - 0.7034186147 * m + 1.7076147010 * s;
-
-- return QColor::fromRgbF(r, g, b);
-+ return QColor::fromRgbF(r, g, b).toRgb();
- }
-
- auto toLinearSRGB = QColorSpace(QColorSpace::SRgb).transformationToColorSpace(QColorSpace::SRgbLinear);
---
-GitLab
-
diff -Nru plasma-workspace-6.3.5/debian/patches/upstream_41a554e6_applets-notifications-Don-t-set-a-parent-for-WidgetsAskUserActionHandler.patch plasma-workspace-6.3.6/debian/patches/upstream_41a554e6_applets-notifications-Don-t-set-a-parent-for-WidgetsAskUserActionHandler.patch
--- plasma-workspace-6.3.5/debian/patches/upstream_41a554e6_applets-notifications-Don-t-set-a-parent-for-WidgetsAskUserActionHandler.patch 2025-05-20 08:31:26.000000000 +0200
+++ plasma-workspace-6.3.6/debian/patches/upstream_41a554e6_applets-notifications-Don-t-set-a-parent-for-WidgetsAskUserActionHandler.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,51 +0,0 @@
-From 41a554e6d9b3e58ac3d7375eb4fbd22acca3a5af Mon Sep 17 00:00:00 2001
-From: Kai Uwe Broulik <kde@privat.broulik.de>
-Date: Tue, 20 May 2025 16:00:15 +0000
-Subject: [PATCH] applets/notifications: Don't set a parent for
- WidgetsAskUserActionHandler
-
-The notification popup gets destroyed as soon as the user clicked the menu item,
-so the handler is destroyed (curiously still leaving the KMessageDialog up) and
-askUserDeleteResult is never emitted.
-
-BUG: 504385
-
-
-(cherry picked from commit f81dd70a3501f1011d73128277c4aba87014c481)
-
-Co-authored-by: Kai Uwe Broulik <kde@privat.broulik.de>
-
-(cherry picked from commit 7dff2f025da66873911eb1a66fbdded080c7b473)
-
-Co-authored-by: Kai Uwe Broulik <kde@privat.broulik.de>
----
- applets/notifications/filemenu.cpp | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/applets/notifications/filemenu.cpp b/applets/notifications/filemenu.cpp
-index 4bc06cb4c02..26b9c670d55 100644
---- a/applets/notifications/filemenu.cpp
-+++ b/applets/notifications/filemenu.cpp
-@@ -151,7 +151,8 @@ void FileMenu::open(int x, int y)
- const bool canTrash = itemProperties.isLocal() && itemProperties.supportsMoving();
- if (canTrash) {
- auto moveToTrashLambda = [this] {
-- auto handler = new KIO::WidgetsAskUserActionHandler(this);
-+ // No parent since the FileMenu will be destroyed as soon as the user clicked the menu item.
-+ auto handler = new KIO::WidgetsAskUserActionHandler();
- connect(handler, &KIO::WidgetsAskUserActionHandler::askUserDeleteResult, [handler](bool allow, const QList<QUrl> &urls) {
- if (allow) {
- auto job = KIO::trash(urls);
-@@ -172,7 +173,8 @@ void FileMenu::open(int x, int y)
-
- if (itemProperties.supportsDeleting() && (!canTrash || showDeleteCommand)) {
- auto deleteLambda = [this] {
-- auto handler = new KIO::WidgetsAskUserActionHandler(this);
-+ // No parent since the FileMenu will be destroyed as soon as the user clicked the menu item.
-+ auto handler = new KIO::WidgetsAskUserActionHandler();
- connect(handler, &KIO::WidgetsAskUserActionHandler::askUserDeleteResult, [handler](bool allow, const QList<QUrl> &urls) {
- if (allow) {
- auto job = KIO::del(urls);
---
-GitLab
-
diff -Nru plasma-workspace-6.3.5/debian/patches/upstream_45784326_libtaskmanager-show-Comment-for-launcher-icons-when-appropriate.patch plasma-workspace-6.3.6/debian/patches/upstream_45784326_libtaskmanager-show-Comment-for-launcher-icons-when-appropriate.patch
--- plasma-workspace-6.3.5/debian/patches/upstream_45784326_libtaskmanager-show-Comment-for-launcher-icons-when-appropriate.patch 1970-01-01 01:00:00.000000000 +0100
+++ plasma-workspace-6.3.6/debian/patches/upstream_45784326_libtaskmanager-show-Comment-for-launcher-icons-when-appropriate.patch 2025-07-19 10:40:10.000000000 +0200
@@ -0,0 +1,88 @@
+From 45784326e48665849ba881a442d0d76bb2b22ca0 Mon Sep 17 00:00:00 2001
+From: Nate Graham <nate@kde.org>
+Date: Thu, 22 May 2025 09:06:52 -0600
+Subject: [PATCH] libtaskmanager: show Comment for launcher icons when
+ appropriate
+
+Right now, launcher icons get a caption equal to the app's GenericName,
+if one is set in the metadata. If not, it gets no caption.
+
+This differs from what Kicker and Kickoff Manager do: a more complex
+behavior to show the Comment if the app has no GenericName or if its
+GenericName is equal to its Name. Let's replicate the same logic here.
+
+BUG: 504431
+FIXED-IN: 6.4.0
+
+
+(cherry picked from commit ae39f3219d6fc849fe8de0d1c165a572598082fe)
+
+Co-authored-by: Nate Graham <nate@kde.org>
+---
+ libtaskmanager/tasktools.cpp | 22 ++++++++++++++++++----
+ 1 file changed, 18 insertions(+), 4 deletions(-)
+
+diff --git a/libtaskmanager/tasktools.cpp b/libtaskmanager/tasktools.cpp
+index 873d9eac31..e46d96382b 100644
+--- a/libtaskmanager/tasktools.cpp
++++ b/libtaskmanager/tasktools.cpp
+@@ -34,6 +34,20 @@
+
+ using namespace Qt::StringLiterals;
+
++static const QString appropriateCaption(const KService::Ptr &service)
++{
++ if (!service) {
++ return {};
++ }
++
++ const QString genericName = service->genericName();
++ if (!genericName.isEmpty() && genericName != service->name()) {
++ return genericName;
++ }
++
++ return service->comment();
++}
++
+ namespace TaskManager
+ {
+ AppData appDataFromUrl(const QUrl &url, const QIcon &fallbackIcon)
+@@ -65,7 +79,7 @@ AppData appDataFromUrl(const QUrl &url, const QIcon &fallbackIcon)
+
+ if (service && url.path() == service->menuId()) {
+ data.name = service->name();
+- data.genericName = service->genericName();
++ data.genericName = appropriateCaption(service);
+ data.id = service->storageId();
+
+ if (data.icon.isNull()) {
+@@ -89,7 +103,7 @@ AppData appDataFromUrl(const QUrl &url, const QIcon &fallbackIcon)
+
+ if (service && QUrl::fromLocalFile(service->entryPath()) == url) {
+ data.name = service->name();
+- data.genericName = service->genericName();
++ data.genericName = appropriateCaption(service);
+ data.id = service->storageId();
+
+ if (data.icon.isNull()) {
+@@ -99,7 +113,7 @@ AppData appDataFromUrl(const QUrl &url, const QIcon &fallbackIcon)
+ KDesktopFile f(url.toLocalFile());
+ if (f.tryExec()) {
+ data.name = f.readName();
+- data.genericName = f.readGenericName();
++ data.genericName = appropriateCaption(KService::serviceByDesktopPath(url.toLocalFile()));
+ data.id = QUrl::fromLocalFile(f.fileName()).fileName();
+
+ if (data.icon.isNull()) {
+@@ -144,7 +158,7 @@ AppData appDataFromUrl(const QUrl &url, const QIcon &fallbackIcon)
+ const QString &desktopFile = service->entryPath();
+
+ data.name = service->name();
+- data.genericName = service->genericName();
++ data.genericName = appropriateCaption(service);
+ data.id = service->storageId();
+
+ if (data.icon.isNull()) {
+--
+GitLab
+
diff -Nru plasma-workspace-6.3.5/debian/patches/upstream_60859fa9_applets-devicenotifier-fix-pointless-mount-action.patch plasma-workspace-6.3.6/debian/patches/upstream_60859fa9_applets-devicenotifier-fix-pointless-mount-action.patch
--- plasma-workspace-6.3.5/debian/patches/upstream_60859fa9_applets-devicenotifier-fix-pointless-mount-action.patch 2025-05-20 08:31:26.000000000 +0200
+++ plasma-workspace-6.3.6/debian/patches/upstream_60859fa9_applets-devicenotifier-fix-pointless-mount-action.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,72 +0,0 @@
-From 60859fa99ad81e2aff7ceb35d4ae79a304374f37 Mon Sep 17 00:00:00 2001
-From: Nate Graham <nate@kde.org>
-Date: Thu, 15 May 2025 15:30:30 -0600
-Subject: [PATCH] applets/devicenotifier: fix pointless mount action
-
-BUG: 503999
-
-Audio CD and blank CD/DVD/BD does not have storage access.
-So check this before add mount action for them.
-
-
-(cherry picked from commit 683b8c3d71781c4e821cd2f9ac93eb4f157bb6ea)
-
-Co-authored-by: Bohdan Onofriichuk <bogdan.onofriuchuk@gmail.com>
----
- .../devicenotifier/plugin/actions/mountaction.cpp | 13 ++++++++++++-
- applets/devicenotifier/plugin/actions/mountaction.h | 1 +
- 2 files changed, 13 insertions(+), 1 deletion(-)
-
-diff --git a/applets/devicenotifier/plugin/actions/mountaction.cpp b/applets/devicenotifier/plugin/actions/mountaction.cpp
-index 4df5c982042..88d3d898191 100644
---- a/applets/devicenotifier/plugin/actions/mountaction.cpp
-+++ b/applets/devicenotifier/plugin/actions/mountaction.cpp
-@@ -18,6 +18,8 @@
- MountAction::MountAction(const QString &udi, QObject *parent)
- : ActionInterface(udi, parent)
- , m_stateMonitor(DevicesStateMonitor::instance())
-+ , m_supportsMTP(false)
-+ , m_hasStorageAccess(false)
- {
- Solid::Device device(udi);
-
-@@ -39,6 +41,15 @@ MountAction::MountAction(const QString &udi, QObject *parent)
-
- m_supportsMTP = supportedProtocols.contains(QLatin1String("mtp"));
-
-+ // It's possible for there to be no StorageAccess (e.g. MTP devices don't have one)
-+ if (device.is<Solid::StorageAccess>()) {
-+ Solid::StorageAccess *access = device.as<Solid::StorageAccess>();
-+ if (access) {
-+ qCDebug(APPLETS::DEVICENOTIFIER) << "Mount action: have storage access";
-+ m_hasStorageAccess = true;
-+ }
-+ }
-+
- connect(m_stateMonitor.get(), &DevicesStateMonitor::stateChanged, this, &MountAction::updateIsValid);
- }
-
-@@ -67,7 +78,7 @@ void MountAction::triggered()
-
- bool MountAction::isValid() const
- {
-- return m_stateMonitor->isRemovable(m_udi) && !m_stateMonitor->isMounted(m_udi) && !m_supportsMTP;
-+ return m_hasStorageAccess && m_stateMonitor->isRemovable(m_udi) && !m_stateMonitor->isMounted(m_udi) && !m_supportsMTP;
- }
-
- void MountAction::updateIsValid(const QString &udi)
-diff --git a/applets/devicenotifier/plugin/actions/mountaction.h b/applets/devicenotifier/plugin/actions/mountaction.h
-index c7f744f1839..a76ee2f5b04 100644
---- a/applets/devicenotifier/plugin/actions/mountaction.h
-+++ b/applets/devicenotifier/plugin/actions/mountaction.h
-@@ -33,6 +33,7 @@ private Q_SLOTS:
-
- private:
- bool m_supportsMTP;
-+ bool m_hasStorageAccess;
-
- std::shared_ptr<DevicesStateMonitor> m_stateMonitor;
- };
---
-GitLab
-
diff -Nru plasma-workspace-6.3.5/debian/patches/upstream_72719edd_components-sessionprivate-fix-a-potential-crash-in-SessionsModel.patch plasma-workspace-6.3.6/debian/patches/upstream_72719edd_components-sessionprivate-fix-a-potential-crash-in-SessionsModel.patch
--- plasma-workspace-6.3.5/debian/patches/upstream_72719edd_components-sessionprivate-fix-a-potential-crash-in-SessionsModel.patch 2025-05-20 08:31:26.000000000 +0200
+++ plasma-workspace-6.3.6/debian/patches/upstream_72719edd_components-sessionprivate-fix-a-potential-crash-in-SessionsModel.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,56 +0,0 @@
-From 72719edd270f935f9054e286e257cd8e7ed2698c Mon Sep 17 00:00:00 2001
-From: Fushan Wen <qydwhotmail@gmail.com>
-Date: Mon, 19 May 2025 19:56:15 +0800
-Subject: [PATCH] components/sessionprivate: fix a potential crash in
- SessionsModel
-
-The problem is that std::function is passed by reference instead of
-copy, which might become dangling in the finished slot.
-
-
-(cherry picked from commit 3ed6ee211bbad1f5d76afa1f30844bebad17bed4)
-
-Co-authored-by: Fushan Wen <qydwhotmail@gmail.com>
-
-(cherry picked from commit 995b597b24ca96aaea81f71781de8ddf60adf5e1)
-
-Co-authored-by: Fushan Wen <qydwhotmail@gmail.com>
----
- components/sessionsprivate/sessionsmodel.cpp | 4 ++--
- components/sessionsprivate/sessionsmodel.h | 2 +-
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/components/sessionsprivate/sessionsmodel.cpp b/components/sessionsprivate/sessionsmodel.cpp
-index b3f66f4d2c3..20bda2b6c12 100644
---- a/components/sessionsprivate/sessionsmodel.cpp
-+++ b/components/sessionsprivate/sessionsmodel.cpp
-@@ -187,11 +187,11 @@ void SessionsModel::reload()
- }
- }
-
--void SessionsModel::checkScreenLocked(const std::function<void(bool)> &cb)
-+void SessionsModel::checkScreenLocked(std::function<void(bool)> &&cb)
- {
- auto reply = m_screensaverInterface->GetActive();
- QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this);
-- QObject::connect(watcher, &QDBusPendingCallWatcher::finished, this, [cb](QDBusPendingCallWatcher *watcher) {
-+ QObject::connect(watcher, &QDBusPendingCallWatcher::finished, this, [cb = std::move(cb)](QDBusPendingCallWatcher *watcher) {
- QDBusPendingReply<bool> reply = *watcher;
- if (!reply.isError()) {
- cb(reply.value());
-diff --git a/components/sessionsprivate/sessionsmodel.h b/components/sessionsprivate/sessionsmodel.h
-index 81084748b16..bc580d7406d 100644
---- a/components/sessionsprivate/sessionsmodel.h
-+++ b/components/sessionsprivate/sessionsmodel.h
-@@ -91,7 +91,7 @@ Q_SIGNALS:
- void aboutToLockScreen();
-
- private:
-- void checkScreenLocked(const std::function<void(bool)> &cb);
-+ void checkScreenLocked(std::function<void(bool)> &&cb);
-
- KDisplayManager m_displayManager;
-
---
-GitLab
-
diff -Nru plasma-workspace-6.3.5/debian/patches/upstream_7635c551_libnotificationmanager-fix-critical-notifications-not-showing-when-Do-not-disturb-is-active.patch plasma-workspace-6.3.6/debian/patches/upstream_7635c551_libnotificationmanager-fix-critical-notifications-not-showing-when-Do-not-disturb-is-active.patch
--- plasma-workspace-6.3.5/debian/patches/upstream_7635c551_libnotificationmanager-fix-critical-notifications-not-showing-when-Do-not-disturb-is-active.patch 2025-05-20 08:31:26.000000000 +0200
+++ plasma-workspace-6.3.6/debian/patches/upstream_7635c551_libnotificationmanager-fix-critical-notifications-not-showing-when-Do-not-disturb-is-active.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,44 +0,0 @@
-From 7635c5519acc28e503d82a570abf9f79bcfa10fe Mon Sep 17 00:00:00 2001
-From: Fushan Wen <qydwhotmail@gmail.com>
-Date: Fri, 16 May 2025 10:03:13 +0800
-Subject: [PATCH] libnotificationmanager: fix critical notifications not
- showing when Do not disturb is active
-
-The filter only checks if `WasAddedDuringInhibitionRole` is true but
-ignores the urgency flag, which is used to show critical notifications
-when Do not disturb is active.
-
-
-(cherry picked from commit 49214ae107a4a13338876488b2bc28cf018d02c4)
-
-Co-authored-by: Fushan Wen <qydwhotmail@gmail.com>
-
-(cherry picked from commit 8642df804d1e59db9233c44943483348328b4982)
-
-Co-authored-by: Fushan Wen <qydwhotmail@gmail.com>
----
- libnotificationmanager/notificationfilterproxymodel.cpp | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/libnotificationmanager/notificationfilterproxymodel.cpp b/libnotificationmanager/notificationfilterproxymodel.cpp
-index 6e847a5eea5..f8ad1d93a83 100644
---- a/libnotificationmanager/notificationfilterproxymodel.cpp
-+++ b/libnotificationmanager/notificationfilterproxymodel.cpp
-@@ -191,8 +191,12 @@ bool NotificationFilterProxyModel::filterAcceptsRow(int source_row, const QModel
- }
- }
-
-- if (!m_showAddedDuringInhibition && sourceIdx.data(Notifications::WasAddedDuringInhibitionRole).toBool()) {
-- return false;
-+ // Normal Do Not Disturb filtering
-+ if (!m_showAddedDuringInhibition) {
-+ // Show critical notifications even in Do Not Disturb
-+ if (!m_urgencies.testFlag(urgency) && sourceIdx.data(Notifications::WasAddedDuringInhibitionRole).toBool()) {
-+ return false;
-+ }
- }
-
- return true;
---
-GitLab
-
diff -Nru plasma-workspace-6.3.5/debian/patches/upstream_88911e82_shell-Rearrange-the-teardown-order.patch plasma-workspace-6.3.6/debian/patches/upstream_88911e82_shell-Rearrange-the-teardown-order.patch
--- plasma-workspace-6.3.5/debian/patches/upstream_88911e82_shell-Rearrange-the-teardown-order.patch 1970-01-01 01:00:00.000000000 +0100
+++ plasma-workspace-6.3.6/debian/patches/upstream_88911e82_shell-Rearrange-the-teardown-order.patch 2025-07-19 10:52:36.000000000 +0200
@@ -0,0 +1,89 @@
+From 88911e8246c0136fa07945304fc9ba7840b90f8f Mon Sep 17 00:00:00 2001
+From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
+Date: Wed, 28 May 2025 13:36:20 +0000
+Subject: [PATCH] shell: Rearrange the teardown order
+
+At the moment, the ShellCorona is destroyed after the QApplication object.
+Destroying something after the application object can lead to
+unexpected results because most of the code is written with an assumption
+that the app object and the associated objects, e.g. the qpa, are still
+valid when the cleanup code runs.
+
+This change puts the ShellCorona on the stack so the destruction order
+looks as follows:
+
+- destroy ShellCorona
+- destroy QApplication
+
+CCBUG: 487660
+
+
+(cherry picked from commit e2326d7f9e752eb18411ef4c0bcd53b8f34e02c6)
+
+Co-authored-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
+---
+ shell/main.cpp | 17 +++++++----------
+ 1 file changed, 7 insertions(+), 10 deletions(-)
+
+diff --git a/shell/main.cpp b/shell/main.cpp
+index ae583ce127..a182d16e2f 100644
+--- a/shell/main.cpp
++++ b/shell/main.cpp
+@@ -92,7 +92,7 @@ int main(int argc, char *argv[])
+
+ bool replace = false;
+
+- ShellCorona *corona = nullptr;
++ ShellCorona corona;
+ {
+ QCommandLineParser cliOptions;
+
+@@ -132,23 +132,20 @@ int main(int argc, char *argv[])
+ QObject::connect(&app, &QGuiApplication::commitDataRequest, disableSessionManagement);
+ QObject::connect(&app, &QGuiApplication::saveStateRequest, disableSessionManagement);
+
+- corona = new ShellCorona(&app);
+- corona->setShell(cliOptions.value(shellPluginOption));
+- if (!corona->kPackage().isValid()) {
+- qCritical() << "starting invalid corona" << corona->shell();
++ corona.setShell(cliOptions.value(shellPluginOption));
++ if (!corona.kPackage().isValid()) {
++ qCritical() << "starting invalid corona" << corona.shell();
+ return 1;
+ }
+
+ #ifdef WITH_KUSERFEEDBACKCORE
+- auto userFeedback = new UserFeedback(corona, &app);
++ auto userFeedback = new UserFeedback(&corona, &corona);
+ if (cliOptions.isSet(feedbackOption)) {
+ QTextStream(stdout) << userFeedback->describeDataSources();
+ return 0;
+ }
+ #endif
+
+- QObject::connect(QCoreApplication::instance(), &QCoreApplication::aboutToQuit, corona, &QObject::deleteLater);
+-
+ if (!cliOptions.isSet(noRespawnOption)) {
+ KCrash::setFlags(KCrash::AutoRestart);
+ }
+@@ -156,7 +153,7 @@ int main(int argc, char *argv[])
+ // Tells libnotificationmanager that we're the only true application that may own notification and job progress services
+ qApp->setProperty("_plasma_dbus_master", true);
+
+- QObject::connect(corona, &ShellCorona::glInitializationFailed, &app, [&app]() {
++ QObject::connect(&corona, &ShellCorona::glInitializationFailed, &app, [&app]() {
+ // scene graphs errors come from a thread
+ // even though we process them in the main thread, app.exit could still process these events
+ static bool s_multipleInvokations = false;
+@@ -185,7 +182,7 @@ int main(int argc, char *argv[])
+
+ KDBusService service(KDBusService::Unique | KDBusService::StartupOption(replace ? KDBusService::Replace : 0));
+
+- corona->init();
++ corona.init();
+ SoftwareRendererNotifier::notifyIfRelevant();
+
+ return app.exec();
+--
+GitLab
+
diff -Nru plasma-workspace-6.3.5/debian/patches/upstream_8e6b79da_containmentlayoutmanager-don-t-enter-edit-mode-without-activefocus.patch plasma-workspace-6.3.6/debian/patches/upstream_8e6b79da_containmentlayoutmanager-don-t-enter-edit-mode-without-activefocus.patch
--- plasma-workspace-6.3.5/debian/patches/upstream_8e6b79da_containmentlayoutmanager-don-t-enter-edit-mode-without-activefocus.patch 1970-01-01 01:00:00.000000000 +0100
+++ plasma-workspace-6.3.6/debian/patches/upstream_8e6b79da_containmentlayoutmanager-don-t-enter-edit-mode-without-activefocus.patch 2025-07-19 11:22:56.000000000 +0200
@@ -0,0 +1,51 @@
+From 8e6b79da5e58622fd27999c85168a616871324b7 Mon Sep 17 00:00:00 2001
+From: Christoph Wolk <cwo.kde@posteo.net>
+Date: Tue, 3 Jun 2025 21:04:21 +0000
+Subject: [PATCH] containmentlayoutmanager: don't enter edit mode without
+ activefocus
+
+ItemContainer enters edit mode on pressAndHold for desktop widgets not
+set to immutable. This causes a problem with menus that open on press -
+the container will not receive further mouse events that now go to the
+menu, so it still considers itself pressed and unmoved the whole time,
+and goes into edit mode after a while, exiting the menu. This makes
+on-press menus in desktop widgets borderline unusable, and even if the
+user manages to be quick enough to activate the desired entry during the
+pressAndHold duration, it'll still enter edit mode unless the user also
+does a full click on the applet afterward.
+
+We can circumvent this particular case relatively easily by listening to
+the container's activefocus changes - the popup opening does not cause
+a focusOut event, but it does take activeFocus away from the container,
+so if we stop the timer in that case, it works out as it should.
+
+CCBUG: 416909
+
+
+(cherry picked from commit 3d9dd7fe1a664b6b4f20523d6c4425eb57dc6b4c)
+
+Co-authored-by: Christoph Wolk <cwo.kde@posteo.net>
+---
+ components/containmentlayoutmanager/itemcontainer.cpp | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/components/containmentlayoutmanager/itemcontainer.cpp b/components/containmentlayoutmanager/itemcontainer.cpp
+index b241f4814b..047c606c70 100644
+--- a/components/containmentlayoutmanager/itemcontainer.cpp
++++ b/components/containmentlayoutmanager/itemcontainer.cpp
+@@ -38,6 +38,12 @@ ItemContainer::ItemContainer(QQuickItem *parent)
+ setLayout(qobject_cast<AppletsLayout *>(parentItem()));
+ });
+
++ connect(this, &ItemContainer::activeFocusChanged, this, [this]() {
++ if (!hasActiveFocus()) { // don't start edit mode if press caused a popup
++ m_editModeTimer->stop();
++ }
++ });
++
+ connect(m_editModeTimer, &QTimer::timeout, this, [this]() {
+ setEditMode(true);
+ });
+--
+GitLab
+
diff -Nru plasma-workspace-6.3.5/debian/patches/upstream_a4e153b3_kcms-feedback-remove-little-hover-icons.patch plasma-workspace-6.3.6/debian/patches/upstream_a4e153b3_kcms-feedback-remove-little-hover-icons.patch
--- plasma-workspace-6.3.5/debian/patches/upstream_a4e153b3_kcms-feedback-remove-little-hover-icons.patch 1970-01-01 01:00:00.000000000 +0100
+++ plasma-workspace-6.3.6/debian/patches/upstream_a4e153b3_kcms-feedback-remove-little-hover-icons.patch 2025-07-19 11:57:59.000000000 +0200
@@ -0,0 +1,60 @@
+From a4e153b3451239e0efb563ecbae84e9cfec14b37 Mon Sep 17 00:00:00 2001
+From: Nate Graham <nate@kde.org>
+Date: Fri, 20 Jun 2025 08:38:03 -0600
+Subject: [PATCH] kcms/feedback: remove little hover icons
+
+These icons have an unclear purpose since they have no text, and the
+same icons are not repeated elsewhere in the KCM's UI to provide some
+clue as to their meaning or purpose. They only appear on hover and
+can't be accessed on touch at all; let's just remove them to prevent
+user confusion.
+
+The backend code providing icons in the model is preserved in case we
+ever want to do something else with icons in the future.
+
+BUG: 505761
+FIXED-IN: 6.4.1
+
+
+(cherry picked from commit 3c277146c4ec44cde54988dcd6c70b17442ad5e9)
+
+Co-authored-by: Nate Graham <nate@kde.org>
+---
+ kcms/feedback/ui/main.qml | 21 ---------------------
+ 1 file changed, 21 deletions(-)
+
+diff --git a/kcms/feedback/ui/main.qml b/kcms/feedback/ui/main.qml
+index bb565169ea..839b8ed3ad 100644
+--- a/kcms/feedback/ui/main.qml
++++ b/kcms/feedback/ui/main.qml
+@@ -145,27 +145,6 @@ SimpleKCM {
+ text: "· " + modelData.description
+ textFormat: Text.PlainText
+ Layout.fillWidth: true
+-
+- MouseArea {
+- anchors.fill: parent
+- hoverEnabled: true
+- QQC2.ToolTip {
+- width: iconsLayout.implicitWidth + Kirigami.Units.largeSpacing * 2
+- height: iconsLayout.implicitHeight + Kirigami.Units.smallSpacing * 2
+- visible: parent.containsMouse
+- RowLayout {
+- id: iconsLayout
+- Repeater {
+- model: modelData.icons
+- delegate: Kirigami.Icon {
+- implicitHeight: Kirigami.Units.iconSizes.medium
+- implicitWidth: Kirigami.Units.iconSizes.medium
+- source: modelData
+- }
+- }
+- }
+- }
+- }
+ }
+ }
+ }
+--
+GitLab
+
diff -Nru plasma-workspace-6.3.5/debian/patches/upstream_ab55c53e_applets-kicker-fix-filenames-containing-in-history.patch plasma-workspace-6.3.6/debian/patches/upstream_ab55c53e_applets-kicker-fix-filenames-containing-in-history.patch
--- plasma-workspace-6.3.5/debian/patches/upstream_ab55c53e_applets-kicker-fix-filenames-containing-in-history.patch 1970-01-01 01:00:00.000000000 +0100
+++ plasma-workspace-6.3.6/debian/patches/upstream_ab55c53e_applets-kicker-fix-filenames-containing-in-history.patch 2025-07-19 11:44:44.000000000 +0200
@@ -0,0 +1,53 @@
+From ab55c53e37814da5aadf9bf29dd5cae7a783ef6e Mon Sep 17 00:00:00 2001
+From: Christoph Wolk <cwo.kde@posteo.net>
+Date: Thu, 5 Jun 2025 18:33:29 +0000
+Subject: [PATCH] applets/kicker: fix filenames containing # in history
+
+Kicker takes the resource name as provided by PlasmaActivities.Stats and
+interprets it as an URL, setting the 'file' url scheme if necessary.
+This fails when the filenames contain a '#' character, as QUrl will
+interpret them as url fragments if not percent-encoded (which they are
+not for local files, but are for remote urls). This makes display and
+opening of such files fail in both Kicker and Kickoff.
+
+Instead, we test whether it's an absolute path (the local history
+entries are) and if so, use QUrl.fromLocalFile to get the correct url.
+This is also what PlasmaActivities.Stats does in ResultSet (which is
+what the Task Manager uses, so everything works there already, but we
+want a real model here).
+
+BUG: 419449
+BUG: 437960
+FIXED-IN: 6.4.0
+
+
+(cherry picked from commit c6c0a68416b5042032853a6f673bddbe475567b7)
+
+Co-authored-by: Christoph Wolk <cwo.kde@posteo.net>
+---
+ applets/kicker/recentusagemodel.cpp | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/applets/kicker/recentusagemodel.cpp b/applets/kicker/recentusagemodel.cpp
+index c0c7466e82..4546269577 100644
+--- a/applets/kicker/plugin/recentusagemodel.cpp
++++ b/applets/kicker/plugin/recentusagemodel.cpp
+@@ -273,10 +273,12 @@ QModelIndex RecentUsageModel::findPlaceForKFileItem(const KFileItem &fileItem) c
+
+ QVariant RecentUsageModel::docData(const QString &resource, int role, const QString &mimeType) const
+ {
+- QUrl url(resource);
++ QUrl url;
+
+- if (url.scheme().isEmpty()) {
+- url.setScheme(QStringLiteral("file"));
++ if (QDir::isAbsolutePath(resource)) {
++ url = QUrl::fromLocalFile(resource);
++ } else {
++ url = QUrl(resource);
+ }
+
+ auto getFileItem = [=]() {
+--
+GitLab
+
diff -Nru plasma-workspace-6.3.5/debian/patches/upstream_b2e80af5_Only-resize-width-to-fit-date-elements-if-they-are-visible.patch plasma-workspace-6.3.6/debian/patches/upstream_b2e80af5_Only-resize-width-to-fit-date-elements-if-they-are-visible.patch
--- plasma-workspace-6.3.5/debian/patches/upstream_b2e80af5_Only-resize-width-to-fit-date-elements-if-they-are-visible.patch 1970-01-01 01:00:00.000000000 +0100
+++ plasma-workspace-6.3.6/debian/patches/upstream_b2e80af5_Only-resize-width-to-fit-date-elements-if-they-are-visible.patch 2025-07-19 12:08:06.000000000 +0200
@@ -0,0 +1,26 @@
+From b2e80af58df6e58659586110ad8b84706600cc85 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Niccol=C3=B2=20Venerandi?= <niccolo@venerandi.com>
+Date: Tue, 17 Jun 2025 09:39:05 +0200
+Subject: [PATCH] Only resize width to fit date elements if they are visible
+
+BUG:505614
+---
+ applets/digital-clock/package/contents/ui/DigitalClock.qml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/applets/digital-clock/package/contents/ui/DigitalClock.qml b/applets/digital-clock/package/contents/ui/DigitalClock.qml
+index 602f6724da..1491764931 100644
+--- a/applets/digital-clock/package/contents/ui/DigitalClock.qml
++++ b/applets/digital-clock/package/contents/ui/DigitalClock.qml
+@@ -249,7 +249,7 @@ MouseArea {
+ target: contentItem
+
+ height: sizehelper.height
+- width: dateLabel.width + labelsGrid.width + timeMetrics.advanceWidth(" ") * 2 + separator.width
++ width: (dateLabel.visible ? dateLabel.width + timeMetrics.advanceWidth(" ") * 2 + separator.width : 0) + labelsGrid.width
+ }
+
+ AnchorChanges {
+--
+GitLab
+
diff -Nru plasma-workspace-6.3.5/debian/patches/upstream_bf67f256_klipper-make-Add-Actions-dialog-only-window-modal.patch plasma-workspace-6.3.6/debian/patches/upstream_bf67f256_klipper-make-Add-Actions-dialog-only-window-modal.patch
--- plasma-workspace-6.3.5/debian/patches/upstream_bf67f256_klipper-make-Add-Actions-dialog-only-window-modal.patch 2025-05-20 08:31:26.000000000 +0200
+++ plasma-workspace-6.3.6/debian/patches/upstream_bf67f256_klipper-make-Add-Actions-dialog-only-window-modal.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,33 +0,0 @@
-From bf67f25676d4d9777d888b6576127d368af66cb7 Mon Sep 17 00:00:00 2001
-From: Nate Graham <nate@kde.org>
-Date: Thu, 22 May 2025 14:58:27 -0600
-Subject: [PATCH] klipper: make "Add Actions" dialog only window-modal
-
-Otherwise it blocks all of plasmashell while it's open.
-
-BUG: 501938
-FIXED-IN: 6.3.6
-
-
-(cherry picked from commit 30c0703860e8e943999152e141bb44c62ee1c038)
-
-Co-authored-by: Nate Graham <nate@kde.org>
----
- klipper/editactiondialog.cpp | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/klipper/editactiondialog.cpp b/klipper/editactiondialog.cpp
-index 09c54c3dd70..eda12832e12 100644
---- a/klipper/editactiondialog.cpp
-+++ b/klipper/editactiondialog.cpp
-@@ -181,6 +181,7 @@ EditActionDialog::EditActionDialog(QWidget *parent)
- : QDialog(parent)
- {
- setWindowTitle(i18n("Action Properties"));
-+ setWindowModality(Qt::WindowModal);
- QDialogButtonBox *buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
- buttons->button(QDialogButtonBox::Ok)->setShortcut(Qt::CTRL | Qt::Key_Return);
- connect(buttons, &QDialogButtonBox::accepted, this, &EditActionDialog::slotAccepted);
---
-GitLab
-
diff -Nru plasma-workspace-6.3.5/debian/patches/upstream_d1896f5a_applets-kicker-resolve-non-existing-files-to-their-url.patch plasma-workspace-6.3.6/debian/patches/upstream_d1896f5a_applets-kicker-resolve-non-existing-files-to-their-url.patch
--- plasma-workspace-6.3.5/debian/patches/upstream_d1896f5a_applets-kicker-resolve-non-existing-files-to-their-url.patch 1970-01-01 01:00:00.000000000 +0100
+++ plasma-workspace-6.3.6/debian/patches/upstream_d1896f5a_applets-kicker-resolve-non-existing-files-to-their-url.patch 2025-07-19 12:02:55.000000000 +0200
@@ -0,0 +1,44 @@
+From d1896f5ac7367a96d710afcd84278760678f36f0 Mon Sep 17 00:00:00 2001
+From: Christoph Wolk <cwo.kde@posteo.net>
+Date: Mon, 23 Jun 2025 20:03:27 +0000
+Subject: [PATCH] applets/kicker: resolve non-existing files to their url
+
+Kicker's PAStats-based favorites do some normalization to, among others,
+resolve symlinked files to their resolved path to reduce duplicates.
+However, if the file doesn't exist, it essentially just gives up. This
+is a problem when trying to remove favorites that were deleted: while
+the un-favoriting in PAStats succeeds, kicker can't remove it from its
+own model because it can't identify the file by its url if it doesn't
+exist. So removed favorites confusingly stick around until the next
+plasmashell restart.
+
+Instead, we take the base url in that case - as the entries already have
+gone through the process, the url is their real url anyway.
+
+BUG: 402820
+FIXED-IN: 6.4.1
+
+
+(cherry picked from commit da244b8764cde5509598965f24804bbaa5e0939f)
+
+Co-authored-by: Christoph Wolk <cwo.kde@posteo.net>
+---
+ applets/kicker/kastatsfavoritesmodel.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/applets/kicker/kastatsfavoritesmodel.cpp b/applets/kicker/kastatsfavoritesmodel.cpp
+index b9cda44a0f..b425c88f9a 100644
+--- a/applets/kicker/plugin/kastatsfavoritesmodel.cpp
++++ b/applets/kicker/plugin/kastatsfavoritesmodel.cpp
+@@ -116,6 +116,8 @@ public:
+ m_id = QUrl::fromLocalFile(file.canonicalFilePath()).toString();
+ return;
+ }
++ // if the file was deleted, take the url as-is
++ m_id = url.toString();
+ }
+
+ // If this is a file, we should have already covered it
+--
+GitLab
+
diff -Nru plasma-workspace-6.3.5/debian/patches/upstream_d286dce3_Klipper-Remove-local-Configure-Klipper-action.patch plasma-workspace-6.3.6/debian/patches/upstream_d286dce3_Klipper-Remove-local-Configure-Klipper-action.patch
--- plasma-workspace-6.3.5/debian/patches/upstream_d286dce3_Klipper-Remove-local-Configure-Klipper-action.patch 1970-01-01 01:00:00.000000000 +0100
+++ plasma-workspace-6.3.6/debian/patches/upstream_d286dce3_Klipper-Remove-local-Configure-Klipper-action.patch 2025-07-19 11:54:27.000000000 +0200
@@ -0,0 +1,51 @@
+From d286dce389e90428f04115fdb631a381d4942641 Mon Sep 17 00:00:00 2001
+From: Akseli Lahtinen <akselmo@akselmo.dev>
+Date: Thu, 19 Jun 2025 20:46:12 +0300
+Subject: [PATCH] Klipper: Remove local Configure Klipper action
+
+This action would cause the shortcuts configuration menu to show
+both local and global shortcuts, which makes no sense due to
+Klipper being a globally accessed application.
+
+This action is only used in cases where Klipper will be it's own
+application with a normal window, similar to applications like Dolphin,
+Kate, etc.. But Klipper is never used this way.
+
+Currently only place where you can use this action is the configuration
+menu itself, where it does nothing, since the menu is already open.
+
+So let's just remove it. This also makes sure users do not accidentally
+select "Shortcut/Alternate" instead of "Global Shortcut/Alternate"
+for their shortcuts. See the related bug for context.
+
+BUG: 501632
+FIXED-IN: 6.4.1
+
+
+(cherry picked from commit 1d3fe2ac0c0e640f0b66ec1e1d34f0e0196bbd7d)
+
+Co-authored-by: Akseli Lahtinen <akselmo@akselmo.dev>
+---
+ klipper/klipper.cpp | 6 ------
+ 1 file changed, 6 deletions(-)
+
+diff --git a/klipper/klipper.cpp b/klipper/klipper.cpp
+index 3bdbf3b831..0fec260e54 100644
+--- a/klipper/klipper.cpp
++++ b/klipper/klipper.cpp
+@@ -110,12 +110,6 @@ Klipper::Klipper(QObject *parent)
+ KGlobalAccel::setGlobalShortcut(m_clearHistoryAction, QKeySequence());
+ connect(m_clearHistoryAction, &QAction::triggered, m_historyModel.get(), &HistoryModel::clearHistory);
+
+- QString CONFIGURE = QStringLiteral("configure");
+- m_configureAction = m_collection->addAction(CONFIGURE);
+- m_configureAction->setIcon(QIcon::fromTheme(CONFIGURE));
+- m_configureAction->setText(i18nc("@action:inmenu", "&Configure Klipper…"));
+- connect(m_configureAction, &QAction::triggered, this, &Klipper::slotConfigure);
+-
+ m_repeatAction = m_collection->addAction(QStringLiteral("repeat_action"));
+ m_repeatAction->setText(i18nc("@action:inmenu", "Manually Invoke Action on Current Clipboard"));
+ m_repeatAction->setIcon(QIcon::fromTheme(QStringLiteral("open-menu-symbolic")));
+--
+GitLab
+
diff -Nru plasma-workspace-6.3.5/debian/patches/upstream_e2ae8f54_libtaskmanager-fix-move-to-activity-when-on-almost-all-activities.patch plasma-workspace-6.3.6/debian/patches/upstream_e2ae8f54_libtaskmanager-fix-move-to-activity-when-on-almost-all-activities.patch
--- plasma-workspace-6.3.5/debian/patches/upstream_e2ae8f54_libtaskmanager-fix-move-to-activity-when-on-almost-all-activities.patch 1970-01-01 01:00:00.000000000 +0100
+++ plasma-workspace-6.3.6/debian/patches/upstream_e2ae8f54_libtaskmanager-fix-move-to-activity-when-on-almost-all-activities.patch 2025-07-19 11:27:48.000000000 +0200
@@ -0,0 +1,70 @@
+From e2ae8f54b0390b869770f59c257d45df99b24678 Mon Sep 17 00:00:00 2001
+From: Christoph Wolk <cwo.kde@posteo.net>
+Date: Thu, 5 Jun 2025 15:18:08 +0000
+Subject: [PATCH] libtaskmanager: fix "move to activity" when on almost all
+ activities
+
+Using the task manager to move windows to other activities works in
+most circumstances, but fails under one condition: when a window is
+already on all activities except the one that is being moved to, the
+window instead ends up on all activities, and has to be moved to that
+activity again to be only on that workspace. This is usually a rare edge
+case, but very commonly happens when using exactly two activities,
+namely always when moving a window from one activity to the other.
+
+This is the result of some unusual api implementation details of
+activities: a window being on all activities is represented by having
+the activity list for that window empty. Moving a window to a different
+activity in libtaskmanager is done by first adding the window to the
+activity list using the plasma wayland protocol. If the list on the kwin
+side is now full, it'll flip it over into the empty list (i.e. all
+activities). Next libtaskmanager tries to remove the other activities
+from the list, this fails because the list is already empty (and kwin
+doesn't handle this because "this use case is not important enough to
+handle here").
+
+Luckily enough, this use case is trivially easy to handle here, all we
+need to do is remove existing activities first, then add the new one.
+This will also briefly put it on all activities, but adding new
+activities works (and puts it only on that activity), it's only
+removing them that fails.
+
+BUG: 483148
+FIXED-IN: 6.4.0
+
+
+(cherry picked from commit 99f9dc95226719c2be53fd86a4a0a3bae88d0aa2)
+
+Co-authored-by: Christoph Wolk <cwo.kde@posteo.net>
+---
+ libtaskmanager/waylandtasksmodel.cpp | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/libtaskmanager/waylandtasksmodel.cpp b/libtaskmanager/waylandtasksmodel.cpp
+index 39d1307a8b..5d38da9aa4 100644
+--- a/libtaskmanager/waylandtasksmodel.cpp
++++ b/libtaskmanager/waylandtasksmodel.cpp
+@@ -1238,15 +1238,15 @@ void WaylandTasksModel::requestActivities(const QModelIndex &index, const QStrin
+ const auto plasmaActivities = window->activities;
+ const auto oldActivities = QSet(plasmaActivities.begin(), plasmaActivities.end());
+
+- const auto activitiesToAdd = newActivities - oldActivities;
+- for (const auto &activity : activitiesToAdd) {
+- window->request_enter_activity(activity);
+- }
+-
+ const auto activitiesToRemove = oldActivities - newActivities;
+ for (const auto &activity : activitiesToRemove) {
+ window->request_leave_activity(activity);
+ }
++
++ const auto activitiesToAdd = newActivities - oldActivities;
++ for (const auto &activity : activitiesToAdd) {
++ window->request_enter_activity(activity);
++ }
+ }
+
+ void WaylandTasksModel::requestPublishDelegateGeometry(const QModelIndex &index, const QRect &geometry, QObject *delegate)
+--
+GitLab
+
diff -Nru plasma-workspace-6.3.5/debian/patches/upstream_e9fd71d9_wallpapers-image-don-t-crash-when-removing-usr-share.patch plasma-workspace-6.3.6/debian/patches/upstream_e9fd71d9_wallpapers-image-don-t-crash-when-removing-usr-share.patch
--- plasma-workspace-6.3.5/debian/patches/upstream_e9fd71d9_wallpapers-image-don-t-crash-when-removing-usr-share.patch 1970-01-01 01:00:00.000000000 +0100
+++ plasma-workspace-6.3.6/debian/patches/upstream_e9fd71d9_wallpapers-image-don-t-crash-when-removing-usr-share.patch 2025-07-19 10:43:24.000000000 +0200
@@ -0,0 +1,62 @@
+From e9fd71d9d36171ec161885f4149a2ff0c2c96554 Mon Sep 17 00:00:00 2001
+From: Marco Martin <notmart@gmail.com>
+Date: Wed, 28 May 2025 10:56:49 +0200
+Subject: [PATCH] wallpapers/image: don't crash when removing /usr/share
+
+we delay addSourceModel when the source model is fully loaded,
+but it might take a long time (ie adding /usr/share)
+
+if then we remove it before it's done, we will have either an assert or a crash
+in qconcatenatetablesmodel (depending if Qt asserts are turned on)
+
+we can safely call addsourceModel immediately, so rowsInserted will be
+forwarded as they come in
+
+BUG:503593
+
+
+(cherry picked from commit f584f1beb3aaafe36c328a761b8eea02b46f20c4)
+
+f584f1be wallpapers/image: don't crash when removing /usr/share
+
+Co-authored-by: Marco Martin <notmart@gmail.com>
+---
+ wallpapers/image/plugin/slidemodel.cpp | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/wallpapers/image/plugin/slidemodel.cpp b/wallpapers/image/plugin/slidemodel.cpp
+index 465cfb9b7d..eaf4ce3085 100644
+--- a/wallpapers/image/plugin/slidemodel.cpp
++++ b/wallpapers/image/plugin/slidemodel.cpp
+@@ -88,12 +88,16 @@ QStringList SlideModel::addDirs(const QStringList &dirs)
+ m_models.insert(d, m);
+ added.append(d);
+
++ // Add the model immediately unconditionally as we might want to remove it before is loaded,
++ // which would crash if we didn't add it yet. when images are loaded the rowsInserted signals
++ // will be properly forwarded
++ addSourceModel(m);
++
+ if (m->loading().value()) {
+ connect(m, &ImageProxyModel::loadingChanged, this, &SlideModel::slotSourceModelLoadingChanged);
+ } else {
+ // In case it loads immediately
+ ++m_loaded;
+- addSourceModel(m);
+ }
+ }
+ }
+@@ -161,10 +165,6 @@ QBindable<bool> SlideModel::loading() const
+
+ void SlideModel::slotSourceModelLoadingChanged()
+ {
+- auto m = static_cast<ImageProxyModel *>(sender());
+- disconnect(m, &ImageProxyModel::loadingChanged, this, nullptr);
+- addSourceModel(m);
+-
+ if (++m_loaded == m_models.size()) {
+ m_loading = false;
+ Q_EMIT done();
+--
+GitLab
+
diff -Nru plasma-workspace-6.3.5/debian/patches/upstream_ec837446_Do-not-emit-OOM-notifications-on-systemd-services-reload.patch plasma-workspace-6.3.6/debian/patches/upstream_ec837446_Do-not-emit-OOM-notifications-on-systemd-services-reload.patch
--- plasma-workspace-6.3.5/debian/patches/upstream_ec837446_Do-not-emit-OOM-notifications-on-systemd-services-reload.patch 1970-01-01 01:00:00.000000000 +0100
+++ plasma-workspace-6.3.6/debian/patches/upstream_ec837446_Do-not-emit-OOM-notifications-on-systemd-services-reload.patch 2025-07-19 12:10:40.000000000 +0200
@@ -0,0 +1,38 @@
+From ec837446c1ebcf45b44d61c4a3b2e361e9913d06 Mon Sep 17 00:00:00 2001
+From: Antonio Rojas <arojas@archlinux.org>
+Date: Sat, 5 Jul 2025 19:52:31 +0000
+Subject: [PATCH] Do not emit OOM notifications on systemd services reload
+
+When systemd services are reloaded, systemd emits all PropertiesChanged signals for all units.
+
+Comparing with the original signals these have a null MainPID, so we can use that to identify them and not emit a notification.
+
+BUG: 502279
+
+
+(cherry picked from commit ce33b24d4f1b5711f7585b33822ab87f2f43af0b)
+
+ce33b24d Do not emit OOM notifications on systemd services reload
+
+Co-authored-by: Antonio Rojas <arojas@archlinux.org>
+---
+ oom-notifier/module.cpp | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/oom-notifier/module.cpp b/oom-notifier/module.cpp
+index 64cf322bc7..127b8d22ee 100644
+--- a/oom-notifier/module.cpp
++++ b/oom-notifier/module.cpp
+@@ -57,6 +57,9 @@ public:
+ if (changed.value(u"Result"_s, QString()) != "oom-kill"_L1) {
+ return;
+ }
++ if (changed.value(u"MainPID"_s) == 0) {
++ return;
++ }
+
+ const auto unit = decodeUnitName(QFileInfo(msg.path()).fileName());
+ const auto service = serviceForUnitName(unit);
+--
+GitLab
+
diff -Nru plasma-workspace-6.3.5/debian/patches/upstream_f1605df4_Do-not-show-logout-screen-when-in-lockscreen-screensaver.patch plasma-workspace-6.3.6/debian/patches/upstream_f1605df4_Do-not-show-logout-screen-when-in-lockscreen-screensaver.patch
--- plasma-workspace-6.3.5/debian/patches/upstream_f1605df4_Do-not-show-logout-screen-when-in-lockscreen-screensaver.patch 1970-01-01 01:00:00.000000000 +0100
+++ plasma-workspace-6.3.6/debian/patches/upstream_f1605df4_Do-not-show-logout-screen-when-in-lockscreen-screensaver.patch 2025-07-19 11:12:24.000000000 +0200
@@ -0,0 +1,49 @@
+From f1605df4a461874f39e6aef217397caab4d91e47 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Niccol=C3=B2=20Venerandi?= <niccolo@venerandi.com>
+Date: Mon, 2 Jun 2025 11:35:03 +0000
+Subject: [PATCH] Do not show logout screen when in lockscreen / screensaver
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+BUG:504575
+
+
+(cherry picked from commit ba7a8c16b7934fa23d3a44bb38667554e39996b7)
+
+Co-authored-by: Niccolò Venerandi <niccolo@venerandi.com>
+---
+ libkworkspace/sessionmanagement.cpp | 17 ++++++++++++-----
+ 1 file changed, 12 insertions(+), 5 deletions(-)
+
+diff --git a/libkworkspace/sessionmanagement.cpp b/libkworkspace/sessionmanagement.cpp
+index 43a2125917..248147f505 100644
+--- a/libkworkspace/sessionmanagement.cpp
++++ b/libkworkspace/sessionmanagement.cpp
+@@ -148,11 +148,18 @@ void SessionManagement::requestLogoutPrompt()
+ return;
+ }
+
+- // Don't bother to check for whether the user normally wants confirmation or
+- // not; if this function was invoked, it means they do want to see the logout
+- // prompt right now
+- LogoutPromptIface iface;
+- lockQuitUntilFinished(iface.promptAll());
++ OrgFreedesktopScreenSaverInterface ifaceScreenSaver(QStringLiteral("org.freedesktop.ScreenSaver"),
++ QStringLiteral("/ScreenSaver"),
++ QDBusConnection::sessionBus());
++
++ // Do not show Logoup prompt when in the lockscreen / screensaver
++ if (!ifaceScreenSaver.GetActive()) {
++ // Don't bother to check for whether the user normally wants confirmation or
++ // not; if this function was invoked, it means they do want to see the logout
++ // prompt right now
++ LogoutPromptIface iface;
++ lockQuitUntilFinished(iface.promptAll());
++ }
+ }
+
+ void SessionManagement::requestShutdown(ConfirmationMode confirmationMode)
+--
+GitLab
+
diff -Nru plasma-workspace-6.3.5/kcms/colors/colorsapplicator.cpp plasma-workspace-6.3.6/kcms/colors/colorsapplicator.cpp
--- plasma-workspace-6.3.5/kcms/colors/colorsapplicator.cpp 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/kcms/colors/colorsapplicator.cpp 2025-07-08 13:48:12.000000000 +0200
@@ -100,7 +100,7 @@
const auto g = -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s;
const auto b = -0.0041960863 * l - 0.7034186147 * m + 1.7076147010 * s;
- return QColor::fromRgbF(r, g, b);
+ return QColor::fromRgbF(r, g, b).toRgb();
}
auto toLinearSRGB = QColorSpace(QColorSpace::SRgb).transformationToColorSpace(QColorSpace::SRgbLinear);
diff -Nru plasma-workspace-6.3.5/klipper/editactiondialog.cpp plasma-workspace-6.3.6/klipper/editactiondialog.cpp
--- plasma-workspace-6.3.5/klipper/editactiondialog.cpp 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/klipper/editactiondialog.cpp 2025-07-08 13:48:12.000000000 +0200
@@ -181,6 +181,7 @@
: QDialog(parent)
{
setWindowTitle(i18n("Action Properties"));
+ setWindowModality(Qt::WindowModal);
QDialogButtonBox *buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
buttons->button(QDialogButtonBox::Ok)->setShortcut(Qt::CTRL | Qt::Key_Return);
connect(buttons, &QDialogButtonBox::accepted, this, &EditActionDialog::slotAccepted);
diff -Nru plasma-workspace-6.3.5/krunner/qml/RunCommand.qml plasma-workspace-6.3.6/krunner/qml/RunCommand.qml
--- plasma-workspace-6.3.5/krunner/qml/RunCommand.qml 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/krunner/qml/RunCommand.qml 2025-07-08 13:48:12.000000000 +0200
@@ -144,7 +144,11 @@
bottomPadding: parent.bottomPadding
width: parent.width
height: parent.height
- visible: queryField.contentWidth < (queryField.width - queryField.leftPadding - queryField.rightPadding)
+ elide: Text.ElideRight
+ visible: text !== queryField.text
+ && queryField.implicitWidth < (queryField.width
+ - queryField.leftPadding
+ - queryField.rightPadding)
opacity: 0.5
text: ""
textFormat: Text.PlainText
diff -Nru plasma-workspace-6.3.5/libnotificationmanager/notificationfilterproxymodel.cpp plasma-workspace-6.3.6/libnotificationmanager/notificationfilterproxymodel.cpp
--- plasma-workspace-6.3.5/libnotificationmanager/notificationfilterproxymodel.cpp 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/libnotificationmanager/notificationfilterproxymodel.cpp 2025-07-08 13:48:12.000000000 +0200
@@ -191,8 +191,12 @@
}
}
- if (!m_showAddedDuringInhibition && sourceIdx.data(Notifications::WasAddedDuringInhibitionRole).toBool()) {
- return false;
+ // Normal Do Not Disturb filtering
+ if (!m_showAddedDuringInhibition) {
+ // Show critical notifications even in Do Not Disturb
+ if (!m_urgencies.testFlag(urgency) && sourceIdx.data(Notifications::WasAddedDuringInhibitionRole).toBool()) {
+ return false;
+ }
}
return true;
diff -Nru plasma-workspace-6.3.5/po/ar/freespacenotifier.po plasma-workspace-6.3.6/po/ar/freespacenotifier.po
--- plasma-workspace-6.3.5/po/ar/freespacenotifier.po 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/po/ar/freespacenotifier.po 2025-07-08 13:48:12.000000000 +0200
@@ -1,21 +1,22 @@
# Copyright (C) YEAR This_file_is_part_of_KDE
# This file is distributed under the same license as the PACKAGE package.
-# Zayed Al-Saidi <zayed.alsaidi@gmail.com>, 2010, 2021.
+# SPDX-FileCopyrightText: 2010, 2021, 2025 Zayed Al-Saidi <zayed.alsaidi@gmail.com>
# Safa Alfulaij <safa1996alfulaij@gmail.com>, 2016.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-07-23 00:41+0000\n"
-"PO-Revision-Date: 2021-06-21 23:22+0400\n"
+"PO-Revision-Date: 2025-05-14 17:39+0400\n"
"Last-Translator: Zayed Al-Saidi <zayed.alsaidi@gmail.com>\n"
-"Language-Team: Arabic <kde-i18n-ar@kde.org>\n"
+"Language-Team: ar\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+"X-Generator: Lokalize 23.08.5\n"
#: freespacenotifier.cpp:126
#, kde-format
@@ -67,14 +68,14 @@
msgid ""
"Your Home folder is running out of disk space, you have %1 MiB remaining "
"(%2%)."
-msgstr "مساحة مجلّد المنزل تنفذ، بقيت %1 م.بايت (%2٪)"
+msgstr "مساحة مجلّد المنزل تنفد، بقيت %1 م.بايت (%2٪)"
#: module.cpp:43
#, kde-format
msgid ""
"Your Root partition is running out of disk space, you have %1 MiB remaining "
"(%2%)."
-msgstr "مساحة مجلّد الجذر تنفذ، بقيت %1 م.بايت (%2٪)"
+msgstr "مساحة مجلّد الجذر تنفد، بقيت %1 م.بايت (%2٪)"
#: module.cpp:60
#, kde-format
diff -Nru plasma-workspace-6.3.5/po/es/docs/klipper/index.docbook plasma-workspace-6.3.6/po/es/docs/klipper/index.docbook
--- plasma-workspace-6.3.5/po/es/docs/klipper/index.docbook 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/po/es/docs/klipper/index.docbook 2025-07-08 13:48:12.000000000 +0200
@@ -179,7 +179,7 @@
<para
>La acción <guilabel
->Configurar el portapapeles...</guilabel
+>Configurar el portapapeles…</guilabel
> del menú de contexto abre el <link linkend="preferences"
>diálogo de preferencias</link
>. </para>
@@ -221,7 +221,7 @@
<para
>El contenido del portapapeles que se ajuste a una expresión regular también se puede editar antes de realizar una acción sobre él. Seleccione <guimenuitem
->Editar contenido...</guimenuitem
+>Editar contenido…</guimenuitem
> a la derecha de la entrada del portapapeles para poder cambiar el contenido del portapapeles en el diálogo que aparecerá, antes de pulsar el botón <guibutton
>Aceptar</guibutton
> para ejecutar la acción apropiada.</para>
@@ -271,7 +271,7 @@
>Cambiar el comportamiento del portapapeles/selección</title>
<para
>Para cambiar el comportamiento del portapapeles o de la selección, seleccione <guimenuitem
->Configurar el portapapeles...</guimenuitem
+>Configurar el portapapeles…</guimenuitem
> en el menú de contexto de &klipper; y en el diálogo que aparezca, seleccione la página <guilabel
>General</guilabel
>. Si quita la marca de la opción <guilabel
@@ -520,7 +520,7 @@
<listitem
><para
>Pulse el botón <guibutton
->Añadir acción...</guibutton
+>Añadir acción…</guibutton
> para añadir una expresión regular con la que &klipper; pueda encontrar una coincidencia. &klipper; usa la clase la clase <classname
>QRegularExpression</classname
> de &Qt;, que usa PCRE (expresiones regulares compatibles con Perl).</para>
@@ -646,21 +646,23 @@
<para
>&klipper; </para>
<para
->Derechos de autor del programa. 1998. &Andrew.Stanley-Jones; <email
+>Copyright del programa. 1998. &Andrew.Stanley-Jones; <email
>asj@cban.com</email
>. </para>
<para
->Derechos de autor del programa. 1998-2000. &Carsten.Pfeiffer; &Carsten.Pfeiffer.mail;.</para>
+>Copyright del programa. 1998-2000. &Carsten.Pfeiffer; &Carsten.Pfeiffer.mail;.</para>
<para
>El encargado actual es Esben Mose Hansen. En <ulink url="http://mosehansen.dk/about"
>http://mosehansen.dk/about</ulink
> tiene información de contacto. </para>
<para
->Derechos de autor de la documentación. 2000-2003, 2005. &Philip.Rodrigues; &Philip.Rodrigues.mail;.</para>
+>Copyright de la documentación. 2000-2003, 2005. &Philip.Rodrigues; &Philip.Rodrigues.mail;.</para>
<para
->Traducido por Pablo de Vicente <email
+>Traducido por Rocío Gallego <email
+>traducciones@rociogallego.com</email
+>, Pablo de Vicente <email
>pvicentea@nexo.es</email
>, Marcos Fouces Lago <email
>mfouces@yahoo.es</email
diff -Nru plasma-workspace-6.3.5/po/fr/freespacenotifier.po plasma-workspace-6.3.6/po/fr/freespacenotifier.po
--- plasma-workspace-6.3.5/po/fr/freespacenotifier.po 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/po/fr/freespacenotifier.po 2025-07-08 13:48:12.000000000 +0200
@@ -2,7 +2,7 @@
# This file is distributed under the same license as the PACKAGE package.
# Guillaume Pujol <guill.p@gmail.com>, 2009.
# Yoann Laissus <yoann.laissus@gmail.com>, 2015.
-# Xavier Besnard <xavier.besnard@kde.org>, 2020, 2021.
+# SPDX-FileCopyrightText: 2020, 2021, 2025 Xavier Besnard <xavier.besnard@kde.org>
#
msgid ""
msgstr ""
@@ -11,16 +11,16 @@
"POT-Creation-Date: 2024-07-23 00:41+0000\n"
"PO-Revision-Date: 2021-05-27 14:42+0200\n"
"Last-Translator: Xavier Besnard <xavier.besnard@neuf.fr>\n"
-"Language-Team: French <kde-francophone@kde.org>\n"
+"Language-Team: French <French <kde-francophone@kde.org>>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Environment: kde\n"
"X-Accelerator-Marker: &\n"
+"X-Environment: kde\n"
+"X-Generator: Lokalize 25.04.1\n"
"X-Text-Markup: kde4\n"
-"X-Generator: Lokalize 21.04.1\n"
#: freespacenotifier.cpp:126
#, kde-format
diff -Nru plasma-workspace-6.3.5/po/fr/libnotificationmanager.po plasma-workspace-6.3.6/po/fr/libnotificationmanager.po
--- plasma-workspace-6.3.5/po/fr/libnotificationmanager.po 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/po/fr/libnotificationmanager.po 2025-07-08 13:48:12.000000000 +0200
@@ -15,7 +15,7 @@
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Accelerator-Marker: &\n"
"X-Environment: kde\n"
-"X-Generator: Lokalize 24.12.0\n"
+"X-Generator: Lokalize 25.04.0\n"
"X-Text-Markup: kde4\n"
#: abstractnotificationsmodel.cpp:319
diff -Nru plasma-workspace-6.3.5/po/it/freespacenotifier.po plasma-workspace-6.3.6/po/it/freespacenotifier.po
--- plasma-workspace-6.3.5/po/it/freespacenotifier.po 2025-05-06 19:59:33.000000000 +0200
+++ plasma-workspace-6.3.6/po/it/freespacenotifier.po 2025-07-08 13:48:12.000000000 +0200
@@ -1,6 +1,6 @@
# Copyright (C) YEAR This_file_is_part_of_KDE
# This file is distributed under the same license as the PACKAGE package.
-# Vincenzo Reale <smart2128vr@gmail.com>, 2007, 2008, 2009, 2010, 2014, 2020, 2021.
+# SPDX-FileCopyrightText: 2007, 2008, 2009, 2010, 2014, 2020, 2021, 2025 Vincenzo Reale <smart2128vr@gmail.com>
#
msgid ""
msgstr ""
@@ -15,7 +15,7 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Lokalize 21.04.1\n"
+"X-Generator: Lokalize 25.04.0\n"
#: freespacenotifier.cpp:126
#, kde-format
diff -Nru plasma-workspace-6.3.5/po/it/libnotificationmanager.po plasma-workspace-6.3.6/po/it/libnotificationmanager.po
--- plasma-workspace-6.3.5/po/it/libnotificationmanager.po 2025-05-06 19:59:33.000000000 +0200
+++ plasma-workspace-6.3.6/po/it/libnotificationmanager.po 2025-07-08 13:48:12.000000000 +0200
@@ -15,7 +15,7 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Lokalize 24.12.1\n"
+"X-Generator: Lokalize 25.04.0\n"
#: abstractnotificationsmodel.cpp:319
#, kde-format
diff -Nru plasma-workspace-6.3.5/po/tr/freespacenotifier.po plasma-workspace-6.3.6/po/tr/freespacenotifier.po
--- plasma-workspace-6.3.5/po/tr/freespacenotifier.po 2025-05-06 19:59:33.000000000 +0200
+++ plasma-workspace-6.3.6/po/tr/freespacenotifier.po 2025-07-08 13:48:12.000000000 +0200
@@ -5,21 +5,21 @@
# Ozan Çağlayan <ozan@pardus.org.tr>, 2010.
# H. İbrahim Güngör <ibrahim@pardus.org.tr>, 2011.
# Volkan Gezer <volkangezer@gmail.com>, 2013, 2014, 2021, 2022.
-# Emir SARI <emir_sari@icloud.com>, 2022, 2023.
+# SPDX-FileCopyrightText: 2022, 2023, 2025 Emir SARI <emir_sari@icloud.com>
msgid ""
msgstr ""
"Project-Id-Version: kded_susefreespacenotifier\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-07-23 00:41+0000\n"
-"PO-Revision-Date: 2023-03-31 21:36+0300\n"
-"Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
+"PO-Revision-Date: 2025-05-11 18:31+0300\n"
+"Last-Translator: Emir SARI <emir_sari@îcloud.com>\n"
"Language-Team: Turkish <kde-l10n-tr@kde.org>\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Lokalize 22.12.3\n"
+"X-Generator: Lokalize 25.04.0\n"
#: freespacenotifier.cpp:126
#, kde-format
@@ -40,13 +40,13 @@
#: freespacenotifier.kcfg:9
#, kde-format
msgid "Minimum free space before user starts being notified."
-msgstr "Kullanıcı uyarılmadan önce kalacak en az boş alan miktarı."
+msgstr "Kullanıcı uyarılmaya başlamadan önceki boş alan miktarı."
#. i18n: ectx: label, entry (enableNotification), group (General)
#: freespacenotifier.kcfg:15
#, kde-format
msgid "Is the free space notification enabled."
-msgstr "Boş alan uyarısı etkin mi."
+msgstr "Boş alan bildiriminin etkin olup olmadığı."
#. i18n: ectx: property (text), widget (QCheckBox, kcfg_enableNotification)
#: freespacenotifier_prefs_base.ui:17
diff -Nru plasma-workspace-6.3.5/po/zh_CN/freespacenotifier.po plasma-workspace-6.3.6/po/zh_CN/freespacenotifier.po
--- plasma-workspace-6.3.5/po/zh_CN/freespacenotifier.po 2025-05-06 19:59:33.000000000 +0200
+++ plasma-workspace-6.3.6/po/zh_CN/freespacenotifier.po 2025-07-08 13:48:12.000000000 +0200
@@ -67,14 +67,14 @@
msgid ""
"Your Home folder is running out of disk space, you have %1 MiB remaining "
"(%2%)."
-msgstr "主文件夹磁盘空间不足,您还有 %1 MiB 的剩余空间 (%2%)。"
+msgstr "当前用户的主文件夹磁盘空间即将用尽;剩余空间 %1 MiB (%2%)。"
#: module.cpp:43
#, kde-format
msgid ""
"Your Root partition is running out of disk space, you have %1 MiB remaining "
"(%2%)."
-msgstr "根分区磁盘空间不足,您还有 %1 MiB 的剩余空间 (%2%)。"
+msgstr "本机的根分区磁盘空间即将用尽;剩余空间 %1 MiB (%2%)。"
#: module.cpp:60
#, kde-format
diff -ur '--exclude=po' plasma-workspace-6.3.5/applets/digital-clock/package/contents/ui/DigitalClock.qml plasma-workspace-6.3.6/applets/digital-clock/package/contents/ui/DigitalClock.qml
--- plasma-workspace-6.3.5/applets/digital-clock/package/contents/ui/DigitalClock.qml 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/applets/digital-clock/package/contents/ui/DigitalClock.qml 2025-07-22 08:15:50.000000000 +0200
@@ -249,7 +249,7 @@
target: contentItem
height: sizehelper.height
- width: dateLabel.width + labelsGrid.width + timeMetrics.advanceWidth(" ") * 2 + separator.width
+ width: (dateLabel.visible ? dateLabel.width + timeMetrics.advanceWidth(" ") * 2 + separator.width : 0) + labelsGrid.width
}
AnchorChanges {
diff -ur '--exclude=po' plasma-workspace-6.3.5/applets/kicker/plugin/kastatsfavoritesmodel.cpp plasma-workspace-6.3.6/applets/kicker/plugin/kastatsfavoritesmodel.cpp
--- plasma-workspace-6.3.5/applets/kicker/plugin/kastatsfavoritesmodel.cpp 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/applets/kicker/plugin/kastatsfavoritesmodel.cpp 2025-07-22 08:15:50.000000000 +0200
@@ -116,6 +116,8 @@
m_id = QUrl::fromLocalFile(file.canonicalFilePath()).toString();
return;
}
+ // if the file was deleted, take the url as-is
+ m_id = url.toString();
}
// If this is a file, we should have already covered it
diff -ur '--exclude=po' plasma-workspace-6.3.5/applets/kicker/plugin/recentusagemodel.cpp plasma-workspace-6.3.6/applets/kicker/plugin/recentusagemodel.cpp
--- plasma-workspace-6.3.5/applets/kicker/plugin/recentusagemodel.cpp 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/applets/kicker/plugin/recentusagemodel.cpp 2025-07-22 08:15:50.000000000 +0200
@@ -273,10 +273,12 @@
QVariant RecentUsageModel::docData(const QString &resource, int role, const QString &mimeType) const
{
- QUrl url(resource);
+ QUrl url;
- if (url.scheme().isEmpty()) {
- url.setScheme(QStringLiteral("file"));
+ if (QDir::isAbsolutePath(resource)) {
+ url = QUrl::fromLocalFile(resource);
+ } else {
+ url = QUrl(resource);
}
auto getFileItem = [=]() {
diff -ur '--exclude=po' plasma-workspace-6.3.5/CMakeLists.txt plasma-workspace-6.3.6/CMakeLists.txt
--- plasma-workspace-6.3.5/CMakeLists.txt 2025-07-22 08:15:49.000000000 +0200
+++ plasma-workspace-6.3.6/CMakeLists.txt 2025-07-22 08:15:50.000000000 +0200
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.16)
project(plasma-workspace)
-set(PROJECT_VERSION "6.3.5")
+set(PROJECT_VERSION "6.3.6")
string(REPLACE "." ";" VERSION_LIST ${PROJECT_VERSION})
list(GET VERSION_LIST 0 PROJECT_VERSION_MAJOR)
list(GET VERSION_LIST 1 PROJECT_VERSION_MINOR)
diff -ur '--exclude=po' plasma-workspace-6.3.5/components/containmentlayoutmanager/itemcontainer.cpp plasma-workspace-6.3.6/components/containmentlayoutmanager/itemcontainer.cpp
--- plasma-workspace-6.3.5/components/containmentlayoutmanager/itemcontainer.cpp 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/components/containmentlayoutmanager/itemcontainer.cpp 2025-07-22 08:15:50.000000000 +0200
@@ -38,6 +38,12 @@
setLayout(qobject_cast<AppletsLayout *>(parentItem()));
});
+ connect(this, &ItemContainer::activeFocusChanged, this, [this]() {
+ if (!hasActiveFocus()) { // don't start edit mode if press caused a popup
+ m_editModeTimer->stop();
+ }
+ });
+
connect(m_editModeTimer, &QTimer::timeout, this, [this]() {
setEditMode(true);
});
diff -ur '--exclude=po' plasma-workspace-6.3.5/dataengines/weather/ions/envcan/ion_envcan.cpp plasma-workspace-6.3.6/dataengines/weather/ions/envcan/ion_envcan.cpp
--- plasma-workspace-6.3.5/dataengines/weather/ions/envcan/ion_envcan.cpp 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/dataengines/weather/ions/envcan/ion_envcan.cpp 2025-07-08 13:48:12.000000000 +0200
@@ -17,6 +17,8 @@
#include <QRegularExpression>
#include <QTimeZone>
+using namespace Qt::StringLiterals;
+
WeatherData::WeatherData()
: stationLatitude(qQNaN())
, stationLongitude(qQNaN())
@@ -490,7 +492,7 @@
void EnvCanadaIon::getXMLSetup()
{
// If network is down, we need to spin and wait
- const QUrl url(QStringLiteral("https://dd.weather.gc.ca/citypage_weather/xml/siteList.xml"));
+ const QUrl url(QStringLiteral("https://dd.weather.gc.ca/today/citypage_weather/siteList.xml"));
qCDebug(IONENGINE_ENVCAN) << "Fetching station list:" << url;
KIO::TransferJob *getJob = KIO::get(url, KIO::NoReload, KIO::HideProgressInfo);
@@ -516,7 +518,7 @@
const XMLMapInfo &place = m_places[dataKey];
const QUrl url(QStringLiteral("https://dd.weather.gc.ca/citypage_weather/xml/%1/%2_e.xml").arg(place.territoryName, place.cityCode));
- qCDebug(IONENGINE_ENVCAN) << "Fetching weather URL:" << url;
+ qCDebug(IONENGINE_ENVCAN) << "Fetching legacy weather URL:" << url;
if (place.territoryName.isEmpty() && place.cityCode.isEmpty()) {
setData(source, QStringLiteral("validate"), QStringLiteral("envcan|malformed"));
@@ -532,6 +534,51 @@
connect(getJob, &KJob::result, this, &EnvCanadaIon::slotJobFinished);
}
+// The weather URL has a dynamic name and path depending on its timestamp:
+// https://dd.weather.gc.ca/today/citypage_weather/{PROV}/{HH}/{YYYYMMDD}T{HHmmss.sss}Z_MSC_CitypageWeather_{SiteCode}_en.xml
+// This method is called iteratively 3 times to get the URL and then the weather report
+void EnvCanadaIon::getWeatherData(const QString &source)
+{
+ WeatherData::UrlInfo &info = m_weatherData[source].urlInfo;
+
+ info.requests++;
+ if (info.requests > 3) {
+ qCWarning(IONENGINE_ENVCAN) << "Too many requests to find the weather URL";
+ return;
+ }
+
+ // We get the place info from the stations list
+ if (info.cityCode.isEmpty()) {
+ QString dataKey = source;
+ dataKey.remove(QStringLiteral("envcan|weather|"));
+ const XMLMapInfo &place = m_places[dataKey];
+
+ info.province = place.territoryName;
+ info.cityCode = place.cityCode;
+ }
+
+ // 1. Base URL, on the territory dir, to get the list of hours
+ QString url = u"https://dd.weather.gc.ca/today/citypage_weather/%1/"_s.arg(info.province);
+ // 2. When we know the hour folder, we check for the weather report files
+ if (!info.hours.isEmpty()) {
+ url += info.hours.at(info.hourIndex) + u"/";
+ }
+ // 3. Now we have the full information to compose the URL
+ if (!info.fileName.isEmpty()) {
+ url += info.fileName;
+ }
+
+ qCDebug(IONENGINE_ENVCAN) << "Fetching weather URL:" << url;
+
+ KIO::TransferJob *getJob = KIO::get(QUrl(url), KIO::Reload, KIO::HideProgressInfo);
+
+ m_jobXml.insert(getJob, new QXmlStreamReader);
+ m_jobList.insert(getJob, source);
+
+ connect(getJob, &KIO::TransferJob::data, this, &EnvCanadaIon::slotDataArrived);
+ connect(getJob, &KJob::result, this, &EnvCanadaIon::slotJobFinished);
+}
+
void EnvCanadaIon::setup_slotDataArrived(KIO::Job *job, const QByteArray &data)
{
Q_UNUSED(job)
@@ -550,7 +597,13 @@
return;
}
- // Send to xml.
+ // Remove the HTML doctype line from XML parsing
+ if (data.startsWith("<!DOCTYPE"_ba)) {
+ int newLinePos = data.indexOf('\n');
+ m_jobXml[job]->addData(QByteArrayView(data).slice(newLinePos + 1));
+ return;
+ }
+
m_jobXml[job]->addData(data);
}
@@ -560,10 +613,16 @@
const QString source = m_jobList.value(job);
setData(source, Data());
QXmlStreamReader *reader = m_jobXml.value(job);
- if (reader) {
+ if (!job->error() && reader) {
readXMLData(m_jobList[job], *reader);
}
+ if (job->error() == KIO::ERR_DOES_NOT_EXIST || qobject_cast<KIO::TransferJob *>(job)->isErrorPage()) {
+ qCDebug(IONENGINE_ENVCAN) << "Legacy page not found. Falling back to new API";
+ m_weatherData[source].urlInfo = WeatherData::UrlInfo();
+ getWeatherData(source);
+ }
+
m_jobList.remove(job);
delete m_jobXml[job];
m_jobXml.remove(job);
@@ -686,6 +745,11 @@
if (xml.isStartElement()) {
if (xml.name() == QLatin1String("siteData")) {
parseWeatherSite(data, xml);
+ } else if (xml.name() == QLatin1String("html")) {
+ auto &urlInfo = m_weatherData[source].urlInfo;
+ parseDirListing(urlInfo, xml);
+ getWeatherData(source);
+ return !xml.hasError();
} else {
parseUnknownElement(xml);
}
@@ -733,6 +797,53 @@
return !xml.error();
}
+void EnvCanadaIon::parseDirListing(WeatherData::UrlInfo &info, QXmlStreamReader &xml)
+{
+ const bool expectingFileNames = !info.hours.isEmpty();
+
+ while (!xml.atEnd()) {
+ xml.readNext();
+
+ // We are parsing a directory listing with files or folders as hyperlinks
+ if (xml.isStartElement() && xml.name() == "a"_L1) {
+ QString item = xml.attributes().value(u"href").toString().trimmed();
+
+ // Check for hour folders
+ if (!expectingFileNames && item.endsWith('/'_L1)) {
+ item.slice(0, item.length() - 1);
+
+ bool isHour = false;
+ item.toInt(&isHour);
+ if (isHour) {
+ info.hours.prepend(item);
+ }
+ continue;
+ }
+
+ // Check just for files that match our city code en English language
+ if (item.endsWith(u"%1_en.xml"_s.arg(info.cityCode))) {
+ info.fileName = item;
+ }
+ }
+ }
+
+ // Sort hours in reverse order (more recent first)
+ if (!expectingFileNames && !info.hours.isEmpty()) {
+ std::sort(info.hours.begin(), info.hours.end(), [](const auto &a, const auto &b) {
+ return a.toInt() > b.toInt();
+ });
+ }
+
+ // If we didn't find the filename in the current hour folder
+ // set up a new requests to search it on the previous one
+ if (expectingFileNames && info.fileName.isEmpty()) {
+ if (info.hourIndex < info.hours.count()) {
+ info.hourIndex++;
+ info.requests--;
+ }
+ }
+}
+
void EnvCanadaIon::parseFloat(float &value, QXmlStreamReader &xml)
{
bool ok = false;
diff -ur '--exclude=po' plasma-workspace-6.3.5/dataengines/weather/ions/envcan/ion_envcan.h plasma-workspace-6.3.6/dataengines/weather/ions/envcan/ion_envcan.h
--- plasma-workspace-6.3.5/dataengines/weather/ions/envcan/ion_envcan.h 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/dataengines/weather/ions/envcan/ion_envcan.h 2025-07-08 13:48:12.000000000 +0200
@@ -120,6 +120,18 @@
QString solarDataTimeEngineSourceName;
bool isNight = false;
+
+ // Fields to get the forecast url
+ struct UrlInfo {
+ QString province;
+ QString cityCode;
+ QStringList hours;
+ int hourIndex = 0;
+ QString fileName;
+ int requests = 0;
+ };
+
+ UrlInfo urlInfo;
};
Q_DECLARE_TYPEINFO(WeatherData::WeatherEvent, Q_RELOCATABLE_TYPE);
@@ -174,6 +186,11 @@
void getXMLData(const QString &source);
bool readXMLData(const QString &source, QXmlStreamReader &xml);
+ // New API on envcan: need to get a specifically named file
+ void getWeatherData(const QString &source);
+ // Parse a directory listing with files or folders as hyperlinks
+ void parseDirListing(WeatherData::UrlInfo &info, QXmlStreamReader &xml);
+
// Check if place specified is valid or not
QStringList validate(const QString &source) const;
diff -ur '--exclude=po' plasma-workspace-6.3.5/debian/changelog plasma-workspace-6.3.6/debian/changelog
--- plasma-workspace-6.3.5/debian/changelog 2025-05-20 08:31:26.000000000 +0200
+++ plasma-workspace-6.3.6/debian/changelog 2025-07-19 12:11:47.000000000 +0200
@@ -1,3 +1,53 @@
+plasma-workspace (4:6.3.6-1) unstable; urgency=medium
+
+ [ Aurélien COUDERC ]
+ * New upstream release (6.3.6).
+ - Weather/envcan: Adapt to the new locations list URL.
+ - Weather/envcan: Fix handling of non-continuous hourly folder list.
+ - Dataengines/weather: Adapt to the new dynamic URLs on envcan.
+ - RunCommand: fix "hide faded completion text" calculation. (kde#505698)
+ - Klipper: make "Add Actions" dialog only window-modal. (kde#501938)
+ - Fix cell height calc in resize handle.
+ - Applets/notifications: Don't set a parent for
+ WidgetsAskUserActionHandler. (kde#504385)
+ - Components/sessionprivate: fix a potential crash in SessionsModel.
+ - Libnotificationmanager: fix critical notifications not showing when Do
+ not disturb is active.
+ - Applets/devicenotifier: fix pointless mount action. (kde#503999)
+ - Colorsapplicator: Don't allow extended RGB from OKLabToLinearSRGB.
+ (kde#503394)
+ * Drop backported patches now part of the upstream release.
+ * Refresh patches.
+ * Backport upstream commits:
+ - Fix fallback name for task manager icons for programs with Comment
+ property missing in the desktop file. [45784326] (kde#504431)
+ - Fix crash in system settings when removing /usr/share as a wallpaper
+ directory. [e9fd71d9] (kde#503593)
+ - Fix multiple instances of Plasma shell crash when trying to stop it from
+ going to sleep. [88911e82] (kde#487660)
+ - Do not track cache partitions with freespacenotifier. [01978f58]
+ (kde#504423)
+ - Do not show logout screen on power button press when in lockscreen /
+ screensaver. [f1605df4] (kde#504575)
+ - Fix holding mouse to scroll inside desktop widgets unexpectedly entering
+ edit mode. [8e6b79da] (kde#416909)
+ - Fix "move to activity" when there are only 2 activities. [e2ae8f54]
+ (kde#483148)
+ - applets/kicker: fix filenames containing # missing from history
+ [ab55c53e] (kde#419449, kde#437960)
+ - Klipper: Remove local Configure Klipper action that conflicts
+ with global shortcuts. [d286dce3] (kde#501632)
+ - Remove unexpected hover icons above user feedback selection labels.
+ [a3e153b3] (kde#505761)
+ - Fix unablity to remove/unpin documents/apps from Application Menu after
+ deleting the document/app from system. [d1896f5a] (kde#402820)
+ - Fix unchecking "Show date" in clock settings creating an empty gap on
+ the panel until restarting plasmashell [b2e80af5] (kde#505614)
+ - Fix systemd services reload reemitting all previous OOM notifications.
+ [ec837446] (kde#502279)
+
+ -- Aurélien COUDERC <coucouf@debian.org> Sat, 19 Jul 2025 12:11:47 +0200
+
plasma-workspace (4:6.3.5-1) unstable; urgency=medium
[ Aurélien COUDERC ]
diff -ur '--exclude=po' plasma-workspace-6.3.5/debian/patches/relax-interplasma-versioned-deps.patch plasma-workspace-6.3.6/debian/patches/relax-interplasma-versioned-deps.patch
--- plasma-workspace-6.3.5/debian/patches/relax-interplasma-versioned-deps.patch 2025-05-16 18:55:16.000000000 +0200
+++ plasma-workspace-6.3.6/debian/patches/relax-interplasma-versioned-deps.patch 2025-07-19 10:24:18.000000000 +0200
@@ -4,7 +4,7 @@
list(GET VERSION_LIST 1 PROJECT_VERSION_MINOR)
list(GET VERSION_LIST 2 PROJECT_VERSION_PATCH)
--set(PROJECT_DEP_VERSION "6.3.5")
+-set(PROJECT_DEP_VERSION "6.3.6")
+set(PROJECT_DEP_VERSION "6.3.4")
set(QT_MIN_VERSION "6.7.0")
set(KF6_MIN_VERSION "6.10.0")
diff -ur '--exclude=po' plasma-workspace-6.3.5/debian/patches/series plasma-workspace-6.3.6/debian/patches/series
--- plasma-workspace-6.3.5/debian/patches/series 2025-05-20 08:31:26.000000000 +0200
+++ plasma-workspace-6.3.6/debian/patches/series 2025-07-19 12:10:40.000000000 +0200
@@ -14,12 +14,18 @@
upstream_6d12cde3_wallpapers-image-Fix-thumbnails-not-matching-output-size.patch
upstream_8845c001_shell-Osd-Fix-missing-RTL.patch
upstream_142caad0_applets-notification-fix-fullRepresentation-only-widgets.patch
-upstream_32a7cf2a_colorsapplicator-Don-t-allow-extended-RGB-from-OKLabToLinearSRGB.patch
-upstream_60859fa9_applets-devicenotifier-fix-pointless-mount-action.patch
-upstream_7635c551_libnotificationmanager-fix-critical-notifications-not-showing-when-Do-not-disturb-is-active.patch
-upstream_72719edd_components-sessionprivate-fix-a-potential-crash-in-SessionsModel.patch
-upstream_41a554e6_applets-notifications-Don-t-set-a-parent-for-WidgetsAskUserActionHandler.patch
-upstream_2c855c2f_Fix-cell-height-calc-in-resize-handle.patch
-upstream_bf67f256_klipper-make-Add-Actions-dialog-only-window-modal.patch
upstream_d4df9b5f_applets-systemmonitor-handle-null-faceController.patch
upstream_b9bc83c6_applets-systemmonitor-skip-configure-button-on-sensorless-faces.patch
+upstream_45784326_libtaskmanager-show-Comment-for-launcher-icons-when-appropriate.patch
+upstream_e9fd71d9_wallpapers-image-don-t-crash-when-removing-usr-share.patch
+upstream_88911e82_shell-Rearrange-the-teardown-order.patch
+upstream_01978f58_Do-not-track-cache-partitions-with-freespacenotifier.patch
+upstream_f1605df4_Do-not-show-logout-screen-when-in-lockscreen-screensaver.patch
+upstream_8e6b79da_containmentlayoutmanager-don-t-enter-edit-mode-without-activefocus.patch
+upstream_e2ae8f54_libtaskmanager-fix-move-to-activity-when-on-almost-all-activities.patch
+upstream_ab55c53e_applets-kicker-fix-filenames-containing-in-history.patch
+upstream_d286dce3_Klipper-Remove-local-Configure-Klipper-action.patch
+upstream_a4e153b3_kcms-feedback-remove-little-hover-icons.patch
+upstream_d1896f5a_applets-kicker-resolve-non-existing-files-to-their-url.patch
+upstream_b2e80af5_Only-resize-width-to-fit-date-elements-if-they-are-visible.patch
+upstream_ec837446_Do-not-emit-OOM-notifications-on-systemd-services-reload.patch
Seulement dans plasma-workspace-6.3.6/debian/patches: upstream_01978f58_Do-not-track-cache-partitions-with-freespacenotifier.patch
Seulement dans plasma-workspace-6.3.5/debian/patches: upstream_2c855c2f_Fix-cell-height-calc-in-resize-handle.patch
Seulement dans plasma-workspace-6.3.5/debian/patches: upstream_32a7cf2a_colorsapplicator-Don-t-allow-extended-RGB-from-OKLabToLinearSRGB.patch
Seulement dans plasma-workspace-6.3.5/debian/patches: upstream_41a554e6_applets-notifications-Don-t-set-a-parent-for-WidgetsAskUserActionHandler.patch
Seulement dans plasma-workspace-6.3.6/debian/patches: upstream_45784326_libtaskmanager-show-Comment-for-launcher-icons-when-appropriate.patch
Seulement dans plasma-workspace-6.3.5/debian/patches: upstream_60859fa9_applets-devicenotifier-fix-pointless-mount-action.patch
Seulement dans plasma-workspace-6.3.5/debian/patches: upstream_72719edd_components-sessionprivate-fix-a-potential-crash-in-SessionsModel.patch
Seulement dans plasma-workspace-6.3.5/debian/patches: upstream_7635c551_libnotificationmanager-fix-critical-notifications-not-showing-when-Do-not-disturb-is-active.patch
Seulement dans plasma-workspace-6.3.6/debian/patches: upstream_88911e82_shell-Rearrange-the-teardown-order.patch
Seulement dans plasma-workspace-6.3.6/debian/patches: upstream_8e6b79da_containmentlayoutmanager-don-t-enter-edit-mode-without-activefocus.patch
Seulement dans plasma-workspace-6.3.6/debian/patches: upstream_a4e153b3_kcms-feedback-remove-little-hover-icons.patch
Seulement dans plasma-workspace-6.3.6/debian/patches: upstream_ab55c53e_applets-kicker-fix-filenames-containing-in-history.patch
Seulement dans plasma-workspace-6.3.6/debian/patches: upstream_b2e80af5_Only-resize-width-to-fit-date-elements-if-they-are-visible.patch
Seulement dans plasma-workspace-6.3.5/debian/patches: upstream_bf67f256_klipper-make-Add-Actions-dialog-only-window-modal.patch
Seulement dans plasma-workspace-6.3.6/debian/patches: upstream_d1896f5a_applets-kicker-resolve-non-existing-files-to-their-url.patch
Seulement dans plasma-workspace-6.3.6/debian/patches: upstream_d286dce3_Klipper-Remove-local-Configure-Klipper-action.patch
Seulement dans plasma-workspace-6.3.6/debian/patches: upstream_e2ae8f54_libtaskmanager-fix-move-to-activity-when-on-almost-all-activities.patch
Seulement dans plasma-workspace-6.3.6/debian/patches: upstream_e9fd71d9_wallpapers-image-don-t-crash-when-removing-usr-share.patch
Seulement dans plasma-workspace-6.3.6/debian/patches: upstream_ec837446_Do-not-emit-OOM-notifications-on-systemd-services-reload.patch
Seulement dans plasma-workspace-6.3.6/debian/patches: upstream_f1605df4_Do-not-show-logout-screen-when-in-lockscreen-screensaver.patch
diff -ur '--exclude=po' plasma-workspace-6.3.5/freespacenotifier/module.cpp plasma-workspace-6.3.6/freespacenotifier/module.cpp
--- plasma-workspace-6.3.5/freespacenotifier/module.cpp 2025-07-22 08:15:49.000000000 +0200
+++ plasma-workspace-6.3.6/freespacenotifier/module.cpp 2025-07-22 08:15:50.000000000 +0200
@@ -19,6 +19,7 @@
#include <Solid/StorageVolume>
#include <QDir>
+#include <QFile>
#include "kded_interface.h"
@@ -74,7 +75,11 @@
if (auto generic = device.as<Solid::GenericInterface>()) {
isReadOnly = generic->property(QStringLiteral("ReadOnly")).toBool();
}
- if (isReadOnly) {
+ // Cache devices should be marked through a
+ // CACHEDIR.TAG file to avoid indexing; see
+ // https://bford.info/cachedir/ for reference.
+ const bool isCache = QFile::exists(QDir(access->filePath()).filePath(QStringLiteral("CACHEDIR.TAG")));
+ if (isReadOnly || isCache) {
return;
}
diff -ur '--exclude=po' plasma-workspace-6.3.5/kcms/feedback/ui/main.qml plasma-workspace-6.3.6/kcms/feedback/ui/main.qml
--- plasma-workspace-6.3.5/kcms/feedback/ui/main.qml 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/kcms/feedback/ui/main.qml 2025-07-22 08:15:50.000000000 +0200
@@ -145,27 +145,6 @@
text: "· " + modelData.description
textFormat: Text.PlainText
Layout.fillWidth: true
-
- MouseArea {
- anchors.fill: parent
- hoverEnabled: true
- QQC2.ToolTip {
- width: iconsLayout.implicitWidth + Kirigami.Units.largeSpacing * 2
- height: iconsLayout.implicitHeight + Kirigami.Units.smallSpacing * 2
- visible: parent.containsMouse
- RowLayout {
- id: iconsLayout
- Repeater {
- model: modelData.icons
- delegate: Kirigami.Icon {
- implicitHeight: Kirigami.Units.iconSizes.medium
- implicitWidth: Kirigami.Units.iconSizes.medium
- source: modelData
- }
- }
- }
- }
- }
}
}
}
diff -ur '--exclude=po' plasma-workspace-6.3.5/klipper/klipper.cpp plasma-workspace-6.3.6/klipper/klipper.cpp
--- plasma-workspace-6.3.5/klipper/klipper.cpp 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/klipper/klipper.cpp 2025-07-22 08:15:50.000000000 +0200
@@ -111,12 +111,6 @@
KGlobalAccel::setGlobalShortcut(m_clearHistoryAction, QKeySequence());
connect(m_clearHistoryAction, &QAction::triggered, m_historyModel.get(), &HistoryModel::clearHistory);
- QString CONFIGURE = QStringLiteral("configure");
- m_configureAction = m_collection->addAction(CONFIGURE);
- m_configureAction->setIcon(QIcon::fromTheme(CONFIGURE));
- m_configureAction->setText(i18nc("@action:inmenu", "&Configure Klipper…"));
- connect(m_configureAction, &QAction::triggered, this, &Klipper::slotConfigure);
-
m_repeatAction = m_collection->addAction(QStringLiteral("repeat_action"));
m_repeatAction->setText(i18nc("@action:inmenu", "Manually Invoke Action on Current Clipboard"));
m_repeatAction->setIcon(QIcon::fromTheme(QStringLiteral("open-menu-symbolic")));
diff -ur '--exclude=po' plasma-workspace-6.3.5/krunner/qml/RunCommand.qml plasma-workspace-6.3.6/krunner/qml/RunCommand.qml
--- plasma-workspace-6.3.5/krunner/qml/RunCommand.qml 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/krunner/qml/RunCommand.qml 2025-07-08 13:48:12.000000000 +0200
@@ -144,7 +144,11 @@
bottomPadding: parent.bottomPadding
width: parent.width
height: parent.height
- visible: queryField.contentWidth < (queryField.width - queryField.leftPadding - queryField.rightPadding)
+ elide: Text.ElideRight
+ visible: text !== queryField.text
+ && queryField.implicitWidth < (queryField.width
+ - queryField.leftPadding
+ - queryField.rightPadding)
opacity: 0.5
text: ""
textFormat: Text.PlainText
diff -ur '--exclude=po' plasma-workspace-6.3.5/libkworkspace/sessionmanagement.cpp plasma-workspace-6.3.6/libkworkspace/sessionmanagement.cpp
--- plasma-workspace-6.3.5/libkworkspace/sessionmanagement.cpp 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/libkworkspace/sessionmanagement.cpp 2025-07-22 08:15:50.000000000 +0200
@@ -148,11 +148,18 @@
return;
}
- // Don't bother to check for whether the user normally wants confirmation or
- // not; if this function was invoked, it means they do want to see the logout
- // prompt right now
- LogoutPromptIface iface;
- lockQuitUntilFinished(iface.promptAll());
+ OrgFreedesktopScreenSaverInterface ifaceScreenSaver(QStringLiteral("org.freedesktop.ScreenSaver"),
+ QStringLiteral("/ScreenSaver"),
+ QDBusConnection::sessionBus());
+
+ // Do not show Logoup prompt when in the lockscreen / screensaver
+ if (!ifaceScreenSaver.GetActive()) {
+ // Don't bother to check for whether the user normally wants confirmation or
+ // not; if this function was invoked, it means they do want to see the logout
+ // prompt right now
+ LogoutPromptIface iface;
+ lockQuitUntilFinished(iface.promptAll());
+ }
}
void SessionManagement::requestShutdown(ConfirmationMode confirmationMode)
diff -ur '--exclude=po' plasma-workspace-6.3.5/libtaskmanager/tasktools.cpp plasma-workspace-6.3.6/libtaskmanager/tasktools.cpp
--- plasma-workspace-6.3.5/libtaskmanager/tasktools.cpp 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/libtaskmanager/tasktools.cpp 2025-07-22 08:15:50.000000000 +0200
@@ -34,6 +34,20 @@
using namespace Qt::StringLiterals;
+static const QString appropriateCaption(const KService::Ptr &service)
+{
+ if (!service) {
+ return {};
+ }
+
+ const QString genericName = service->genericName();
+ if (!genericName.isEmpty() && genericName != service->name()) {
+ return genericName;
+ }
+
+ return service->comment();
+}
+
namespace TaskManager
{
AppData appDataFromUrl(const QUrl &url, const QIcon &fallbackIcon)
@@ -65,7 +79,7 @@
if (service && url.path() == service->menuId()) {
data.name = service->name();
- data.genericName = service->genericName();
+ data.genericName = appropriateCaption(service);
data.id = service->storageId();
if (data.icon.isNull()) {
@@ -89,7 +103,7 @@
if (service && QUrl::fromLocalFile(service->entryPath()) == url) {
data.name = service->name();
- data.genericName = service->genericName();
+ data.genericName = appropriateCaption(service);
data.id = service->storageId();
if (data.icon.isNull()) {
@@ -99,7 +113,7 @@
KDesktopFile f(url.toLocalFile());
if (f.tryExec()) {
data.name = f.readName();
- data.genericName = f.readGenericName();
+ data.genericName = appropriateCaption(KService::serviceByDesktopPath(url.toLocalFile()));
data.id = QUrl::fromLocalFile(f.fileName()).fileName();
if (data.icon.isNull()) {
@@ -144,7 +158,7 @@
const QString &desktopFile = service->entryPath();
data.name = service->name();
- data.genericName = service->genericName();
+ data.genericName = appropriateCaption(service);
data.id = service->storageId();
if (data.icon.isNull()) {
diff -ur '--exclude=po' plasma-workspace-6.3.5/libtaskmanager/waylandtasksmodel.cpp plasma-workspace-6.3.6/libtaskmanager/waylandtasksmodel.cpp
--- plasma-workspace-6.3.5/libtaskmanager/waylandtasksmodel.cpp 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/libtaskmanager/waylandtasksmodel.cpp 2025-07-22 08:15:50.000000000 +0200
@@ -1201,15 +1201,15 @@
const auto plasmaActivities = window->activities;
const auto oldActivities = QSet(plasmaActivities.begin(), plasmaActivities.end());
- const auto activitiesToAdd = newActivities - oldActivities;
- for (const auto &activity : activitiesToAdd) {
- window->request_enter_activity(activity);
- }
-
const auto activitiesToRemove = oldActivities - newActivities;
for (const auto &activity : activitiesToRemove) {
window->request_leave_activity(activity);
}
+
+ const auto activitiesToAdd = newActivities - oldActivities;
+ for (const auto &activity : activitiesToAdd) {
+ window->request_enter_activity(activity);
+ }
}
void WaylandTasksModel::requestPublishDelegateGeometry(const QModelIndex &index, const QRect &geometry, QObject *delegate)
diff -ur '--exclude=po' plasma-workspace-6.3.5/oom-notifier/module.cpp plasma-workspace-6.3.6/oom-notifier/module.cpp
--- plasma-workspace-6.3.5/oom-notifier/module.cpp 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/oom-notifier/module.cpp 2025-07-22 08:15:50.000000000 +0200
@@ -57,6 +57,9 @@
if (changed.value(u"Result"_s, QString()) != "oom-kill"_L1) {
return;
}
+ if (changed.value(u"MainPID"_s) == 0) {
+ return;
+ }
const auto unit = decodeUnitName(QFileInfo(msg.path()).fileName());
const auto service = serviceForUnitName(unit);
diff -ur '--exclude=po' plasma-workspace-6.3.5/.pc/applied-patches plasma-workspace-6.3.6/.pc/applied-patches
--- plasma-workspace-6.3.5/.pc/applied-patches 2025-07-22 08:15:50.044025582 +0200
+++ plasma-workspace-6.3.6/.pc/applied-patches 2025-07-22 08:15:50.620041856 +0200
@@ -14,12 +14,18 @@
upstream_6d12cde3_wallpapers-image-Fix-thumbnails-not-matching-output-size.patch
upstream_8845c001_shell-Osd-Fix-missing-RTL.patch
upstream_142caad0_applets-notification-fix-fullRepresentation-only-widgets.patch
-upstream_32a7cf2a_colorsapplicator-Don-t-allow-extended-RGB-from-OKLabToLinearSRGB.patch
-upstream_60859fa9_applets-devicenotifier-fix-pointless-mount-action.patch
-upstream_7635c551_libnotificationmanager-fix-critical-notifications-not-showing-when-Do-not-disturb-is-active.patch
-upstream_72719edd_components-sessionprivate-fix-a-potential-crash-in-SessionsModel.patch
-upstream_41a554e6_applets-notifications-Don-t-set-a-parent-for-WidgetsAskUserActionHandler.patch
-upstream_2c855c2f_Fix-cell-height-calc-in-resize-handle.patch
-upstream_bf67f256_klipper-make-Add-Actions-dialog-only-window-modal.patch
upstream_d4df9b5f_applets-systemmonitor-handle-null-faceController.patch
upstream_b9bc83c6_applets-systemmonitor-skip-configure-button-on-sensorless-faces.patch
+upstream_45784326_libtaskmanager-show-Comment-for-launcher-icons-when-appropriate.patch
+upstream_e9fd71d9_wallpapers-image-don-t-crash-when-removing-usr-share.patch
+upstream_88911e82_shell-Rearrange-the-teardown-order.patch
+upstream_01978f58_Do-not-track-cache-partitions-with-freespacenotifier.patch
+upstream_f1605df4_Do-not-show-logout-screen-when-in-lockscreen-screensaver.patch
+upstream_8e6b79da_containmentlayoutmanager-don-t-enter-edit-mode-without-activefocus.patch
+upstream_e2ae8f54_libtaskmanager-fix-move-to-activity-when-on-almost-all-activities.patch
+upstream_ab55c53e_applets-kicker-fix-filenames-containing-in-history.patch
+upstream_d286dce3_Klipper-Remove-local-Configure-Klipper-action.patch
+upstream_a4e153b3_kcms-feedback-remove-little-hover-icons.patch
+upstream_d1896f5a_applets-kicker-resolve-non-existing-files-to-their-url.patch
+upstream_b2e80af5_Only-resize-width-to-fit-date-elements-if-they-are-visible.patch
+upstream_ec837446_Do-not-emit-OOM-notifications-on-systemd-services-reload.patch
diff -ur '--exclude=po' plasma-workspace-6.3.5/.pc/relax-interplasma-versioned-deps.patch/CMakeLists.txt plasma-workspace-6.3.6/.pc/relax-interplasma-versioned-deps.patch/CMakeLists.txt
--- plasma-workspace-6.3.5/.pc/relax-interplasma-versioned-deps.patch/CMakeLists.txt 2025-05-06 19:59:32.000000000 +0200
+++ plasma-workspace-6.3.6/.pc/relax-interplasma-versioned-deps.patch/CMakeLists.txt 2025-07-08 13:48:11.000000000 +0200
@@ -1,13 +1,13 @@
cmake_minimum_required(VERSION 3.16)
project(plasma-workspace)
-set(PROJECT_VERSION "6.3.5")
+set(PROJECT_VERSION "6.3.6")
string(REPLACE "." ";" VERSION_LIST ${PROJECT_VERSION})
list(GET VERSION_LIST 0 PROJECT_VERSION_MAJOR)
list(GET VERSION_LIST 1 PROJECT_VERSION_MINOR)
list(GET VERSION_LIST 2 PROJECT_VERSION_PATCH)
-set(PROJECT_DEP_VERSION "6.3.5")
+set(PROJECT_DEP_VERSION "6.3.6")
set(QT_MIN_VERSION "6.7.0")
set(KF6_MIN_VERSION "6.10.0")
option(PLASMA_X11_DEFAULT_SESSION "Use X11 session by default for Plasma" OFF)
Seulement dans plasma-workspace-6.3.6/.pc: upstream_01978f58_Do-not-track-cache-partitions-with-freespacenotifier.patch
Seulement dans plasma-workspace-6.3.5/.pc: upstream_2c855c2f_Fix-cell-height-calc-in-resize-handle.patch
Seulement dans plasma-workspace-6.3.5/.pc: upstream_32a7cf2a_colorsapplicator-Don-t-allow-extended-RGB-from-OKLabToLinearSRGB.patch
Seulement dans plasma-workspace-6.3.5/.pc: upstream_41a554e6_applets-notifications-Don-t-set-a-parent-for-WidgetsAskUserActionHandler.patch
Seulement dans plasma-workspace-6.3.6/.pc: upstream_45784326_libtaskmanager-show-Comment-for-launcher-icons-when-appropriate.patch
Seulement dans plasma-workspace-6.3.5/.pc: upstream_60859fa9_applets-devicenotifier-fix-pointless-mount-action.patch
Seulement dans plasma-workspace-6.3.5/.pc: upstream_72719edd_components-sessionprivate-fix-a-potential-crash-in-SessionsModel.patch
Seulement dans plasma-workspace-6.3.5/.pc: upstream_7635c551_libnotificationmanager-fix-critical-notifications-not-showing-when-Do-not-disturb-is-active.patch
Seulement dans plasma-workspace-6.3.6/.pc: upstream_88911e82_shell-Rearrange-the-teardown-order.patch
Seulement dans plasma-workspace-6.3.6/.pc: upstream_8e6b79da_containmentlayoutmanager-don-t-enter-edit-mode-without-activefocus.patch
Seulement dans plasma-workspace-6.3.6/.pc: upstream_a4e153b3_kcms-feedback-remove-little-hover-icons.patch
Seulement dans plasma-workspace-6.3.6/.pc: upstream_ab55c53e_applets-kicker-fix-filenames-containing-in-history.patch
Seulement dans plasma-workspace-6.3.6/.pc: upstream_b2e80af5_Only-resize-width-to-fit-date-elements-if-they-are-visible.patch
Seulement dans plasma-workspace-6.3.5/.pc: upstream_bf67f256_klipper-make-Add-Actions-dialog-only-window-modal.patch
Seulement dans plasma-workspace-6.3.6/.pc: upstream_d1896f5a_applets-kicker-resolve-non-existing-files-to-their-url.patch
Seulement dans plasma-workspace-6.3.6/.pc: upstream_d286dce3_Klipper-Remove-local-Configure-Klipper-action.patch
Seulement dans plasma-workspace-6.3.6/.pc: upstream_e2ae8f54_libtaskmanager-fix-move-to-activity-when-on-almost-all-activities.patch
Seulement dans plasma-workspace-6.3.6/.pc: upstream_e9fd71d9_wallpapers-image-don-t-crash-when-removing-usr-share.patch
Seulement dans plasma-workspace-6.3.6/.pc: upstream_ec837446_Do-not-emit-OOM-notifications-on-systemd-services-reload.patch
Seulement dans plasma-workspace-6.3.6/.pc: upstream_f1605df4_Do-not-show-logout-screen-when-in-lockscreen-screensaver.patch
diff -ur '--exclude=po' plasma-workspace-6.3.5/shell/main.cpp plasma-workspace-6.3.6/shell/main.cpp
--- plasma-workspace-6.3.5/shell/main.cpp 2025-05-06 19:59:33.000000000 +0200
+++ plasma-workspace-6.3.6/shell/main.cpp 2025-07-22 08:15:50.000000000 +0200
@@ -92,7 +92,7 @@
bool replace = false;
- ShellCorona *corona = nullptr;
+ ShellCorona corona;
{
QCommandLineParser cliOptions;
@@ -132,23 +132,20 @@
QObject::connect(&app, &QGuiApplication::commitDataRequest, disableSessionManagement);
QObject::connect(&app, &QGuiApplication::saveStateRequest, disableSessionManagement);
- corona = new ShellCorona(&app);
- corona->setShell(cliOptions.value(shellPluginOption));
- if (!corona->kPackage().isValid()) {
- qCritical() << "starting invalid corona" << corona->shell();
+ corona.setShell(cliOptions.value(shellPluginOption));
+ if (!corona.kPackage().isValid()) {
+ qCritical() << "starting invalid corona" << corona.shell();
return 1;
}
#ifdef WITH_KUSERFEEDBACKCORE
- auto userFeedback = new UserFeedback(corona, &app);
+ auto userFeedback = new UserFeedback(&corona, &corona);
if (cliOptions.isSet(feedbackOption)) {
QTextStream(stdout) << userFeedback->describeDataSources();
return 0;
}
#endif
- QObject::connect(QCoreApplication::instance(), &QCoreApplication::aboutToQuit, corona, &QObject::deleteLater);
-
if (!cliOptions.isSet(noRespawnOption)) {
KCrash::setFlags(KCrash::AutoRestart);
}
@@ -156,7 +153,7 @@
// Tells libnotificationmanager that we're the only true application that may own notification and job progress services
qApp->setProperty("_plasma_dbus_master", true);
- QObject::connect(corona, &ShellCorona::glInitializationFailed, &app, [&app]() {
+ QObject::connect(&corona, &ShellCorona::glInitializationFailed, &app, [&app]() {
// scene graphs errors come from a thread
// even though we process them in the main thread, app.exit could still process these events
static bool s_multipleInvokations = false;
@@ -185,7 +182,7 @@
KDBusService service(KDBusService::Unique | KDBusService::StartupOption(replace ? KDBusService::Replace : 0));
- corona->init();
+ corona.init();
SoftwareRendererNotifier::notifyIfRelevant();
return app.exec();
diff -ur '--exclude=po' plasma-workspace-6.3.5/wallpapers/image/plugin/slidemodel.cpp plasma-workspace-6.3.6/wallpapers/image/plugin/slidemodel.cpp
--- plasma-workspace-6.3.5/wallpapers/image/plugin/slidemodel.cpp 2025-05-06 19:59:33.000000000 +0200
+++ plasma-workspace-6.3.6/wallpapers/image/plugin/slidemodel.cpp 2025-07-22 08:15:50.000000000 +0200
@@ -88,12 +88,16 @@
m_models.insert(d, m);
added.append(d);
+ // Add the model immediately unconditionally as we might want to remove it before is loaded,
+ // which would crash if we didn't add it yet. when images are loaded the rowsInserted signals
+ // will be properly forwarded
+ addSourceModel(m);
+
if (m->loading().value()) {
connect(m, &ImageProxyModel::loadingChanged, this, &SlideModel::slotSourceModelLoadingChanged);
} else {
// In case it loads immediately
++m_loaded;
- addSourceModel(m);
}
}
}
@@ -161,10 +165,6 @@
void SlideModel::slotSourceModelLoadingChanged()
{
- auto m = static_cast<ImageProxyModel *>(sender());
- disconnect(m, &ImageProxyModel::loadingChanged, this, nullptr);
- addSourceModel(m);
-
if (++m_loaded == m_models.size()) {
m_loading = false;
Q_EMIT done();
Reply to: