From b9187596b4f46b828cefa262f04b8ef74198c148627590377ac6c106d3ad49aa Mon Sep 17 00:00:00 2001 From: Luca Beltrame Date: Thu, 9 Feb 2017 06:05:27 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/KDE:Frameworks5/plasma5-workspace?expand=0&rev=291 --- ...llpapers-save-the-config-to-file-not.patch | 59 ------ ...vices-disqualification-much-stricter.patch | 172 ++++++++++++++++++ 0002-fix-isOutputRedundant-logic.patch | 99 ---------- plasma-workspace-5.9.0.tar.xz | 3 - plasma-workspace-5.9.1.tar.xz | 3 + plasma5-workspace.changes | 27 +++ plasma5-workspace.spec | 17 +- 7 files changed, 209 insertions(+), 171 deletions(-) delete mode 100644 0001-When-swapping-Wallpapers-save-the-config-to-file-not.patch create mode 100644 0001-make-services-disqualification-much-stricter.patch delete mode 100644 0002-fix-isOutputRedundant-logic.patch delete mode 100644 plasma-workspace-5.9.0.tar.xz create mode 100644 plasma-workspace-5.9.1.tar.xz diff --git a/0001-When-swapping-Wallpapers-save-the-config-to-file-not.patch b/0001-When-swapping-Wallpapers-save-the-config-to-file-not.patch deleted file mode 100644 index 1bd03ec..0000000 --- a/0001-When-swapping-Wallpapers-save-the-config-to-file-not.patch +++ /dev/null @@ -1,59 +0,0 @@ -From a9f5ada73bf86a145e057eff188f45dfdf61917a Mon Sep 17 00:00:00 2001 -From: David Edmundson -Date: Thu, 26 Jan 2017 16:17:51 +0000 -Subject: [PATCH] When swapping Wallpapers, save the config to file, not just - to propertymap - -Summary: -ContainmentConfigView has a special code path for wallpaper configs -where, if you change wallpaper type, it will create a temporary config -ConfigPropertyMap, then copy it over to the real config when the -containment actually changes. - -ConfigPropertyMap does not call valueChanged() on insertion (See -QQmlPropertyMap), and we only write the value into the actual -KConfigSkeleton on valueChange. - -BUG: 375532 - -Test Plan: -Start plasma with image wallpaper -Set to colour wallpaper and save colour -Hit apply - -Close plasma -Start plasma - -Before the correct colour wouldn't be loaded. Now it is. - -Reviewers: #plasma, mart - -Reviewed By: mart - -Subscribers: plasma-devel - -Tags: #plasma - -Differential Revision: https://phabricator.kde.org/D4285 ---- - shell/containmentconfigview.cpp | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/shell/containmentconfigview.cpp b/shell/containmentconfigview.cpp -index 269ae2b3..4d107bec 100644 ---- a/shell/containmentconfigview.cpp -+++ b/shell/containmentconfigview.cpp -@@ -220,7 +220,9 @@ void ContainmentConfigView::applyWallpaper() - - if (m_currentWallpaperConfig && m_ownWallpaperConfig) { - for (const auto &key : m_ownWallpaperConfig->keys()) { -- m_currentWallpaperConfig->insert(key, m_ownWallpaperConfig->value(key)); -+ auto value = m_ownWallpaperConfig->value(key); -+ m_currentWallpaperConfig->insert(key, value); -+ m_currentWallpaperConfig->valueChanged(key, value); - } - } - --- -2.11.0 - diff --git a/0001-make-services-disqualification-much-stricter.patch b/0001-make-services-disqualification-much-stricter.patch new file mode 100644 index 0000000..4e26ce3 --- /dev/null +++ b/0001-make-services-disqualification-much-stricter.patch @@ -0,0 +1,172 @@ +From 7b1dc9a4bb039ff5ff2a5b71a2c6bc687ad1db72 Mon Sep 17 00:00:00 2001 +From: Harald Sitter +Date: Thu, 2 Feb 2017 19:57:23 +0100 +Subject: [PATCH] make services disqualification much stricter + +Summary: +after the recent set of changes to disqualification we ended up with a bit +too lax disqualification. if we saw the exec OR the storageid we'd +hence forth disqualify a service with either of them being equal. + +in case of system settings this causes a match problem. systemsettings +has two desktop files one !KDE and one OnlyKDE they are however exactly +the same except for a different name and storageid. as a result if the !KDE +one is encountered first it will be disqualified on account of +noDisplay=true and marked as seen. when the OnlyKDE systemsettings is then +iterated it will already have the Exec entry in the seen list and be +disqualified on account of that. + +to prevent this type of confusion make it a requirement to match both +storageid AND exec before disqualifying. + +it may actually be suitable to drop the exec altogether. say I copy firefox +into the user local applications dir and set it NoDisplay=true but change +the exec. this would still lead to the system-wide firefox being found as +it is not getting disqualified. long story short: maybe we should +disqualify services solely on the storageid? + +Test Plan: +- new autotest case +- fails without changes +- passes with changes + +Reviewers: broulik + +Reviewed By: broulik + +Subscribers: plasma-devel + +Tags: #plasma + +Differential Revision: https://phabricator.kde.org/D4415 +--- + .../autotests/fixtures/kdesystemsettings.desktop | 13 +++++++++ + .../autotests/fixtures/systemsettings.desktop | 14 +++++++++ + runners/services/autotests/servicerunnertest.cpp | 34 ++++++++++++++++++++++ + runners/services/servicerunner.cpp | 3 +- + 4 files changed, 63 insertions(+), 1 deletion(-) + create mode 100644 runners/services/autotests/fixtures/kdesystemsettings.desktop + create mode 100644 runners/services/autotests/fixtures/systemsettings.desktop + +diff --git a/runners/services/autotests/fixtures/kdesystemsettings.desktop b/runners/services/autotests/fixtures/kdesystemsettings.desktop +new file mode 100644 +index 00000000..0623f57a +--- /dev/null ++++ b/runners/services/autotests/fixtures/kdesystemsettings.desktop +@@ -0,0 +1,13 @@ ++[Desktop Entry] ++Exec=systemsettings5 ++Icon=preferences-system ++Type=Application ++X-KDE-StartupNotify=true ++NotShowIn=KDE; ++ ++GenericName=KDE System Settings ServiceRunnerTest ++ ++Name=KDE System Settings ServiceRunnerTest ++ ++X-DBUS-StartupType=Unique ++Categories=Qt;KDE;Settings; +diff --git a/runners/services/autotests/fixtures/systemsettings.desktop b/runners/services/autotests/fixtures/systemsettings.desktop +new file mode 100644 +index 00000000..935db902 +--- /dev/null ++++ b/runners/services/autotests/fixtures/systemsettings.desktop +@@ -0,0 +1,14 @@ ++[Desktop Entry] ++Exec=systemsettings5 ++Icon=preferences-system ++Type=Application ++X-DocPath=systemsettings/index.html ++X-KDE-StartupNotify=true ++OnlyShowIn=KDE; ++ ++GenericName=System Settings ServiceRunnerTest ++ ++Name=System Settings ServiceRunnerTest ++ ++X-DBUS-StartupType=Unique ++Categories=Qt;KDE;Settings; +diff --git a/runners/services/autotests/servicerunnertest.cpp b/runners/services/autotests/servicerunnertest.cpp +index d0c6daed..d3217768 100644 +--- a/runners/services/autotests/servicerunnertest.cpp ++++ b/runners/services/autotests/servicerunnertest.cpp +@@ -38,6 +38,7 @@ private Q_SLOTS: + + void testChromeAppsRelevance(); + void testKonsoleVsYakuakeComment(); ++ void testSystemSettings(); + }; + + void ServiceRunnerTest::initTestCase() +@@ -58,6 +59,11 @@ void ServiceRunnerTest::initTestCase() + setlocale(LC_ALL, "C.utf8"); + + KSycoca::self()->ensureCacheValid(); ++ ++ // Make sure noDisplay behaves consistently WRT OnlyShowIn etc. ++ QVERIFY(setenv("XDG_CURRENT_DESKTOP", "KDE", 1) == 0); ++ // NOTE: noDisplay also includes X-KDE-OnlyShowOnQtPlatforms which is a bit harder to fake ++ // and not currently under testing anyway. + } + + void ServiceRunnerTest::cleanupTestCase() +@@ -123,6 +129,34 @@ void ServiceRunnerTest::testKonsoleVsYakuakeComment() + QVERIFY(yakuakeFound); + } + ++void ServiceRunnerTest::testSystemSettings() ++{ ++ // In 5.9.0 'System Settings' suddenly didn't come back as a match for 'settings' anymore. ++ // Sytem Settings has a noKDE version and a KDE version, if the noKDE version is encountered ++ // first it will be added to the seen cache, however disqualification of already seen items ++ // may then also disqualify the KDE version of system settings on account of having already ++ // seen it. This test makes sure we find the right version. ++ ServiceRunner runner(this, QVariantList()); ++ Plasma::RunnerContext context; ++ context.setQuery("settings"); ++ ++ runner.match(context); ++ ++ bool systemSettingsFound = false; ++ bool foreignSystemSettingsFound = false; ++ for (auto match : context.matches()) { ++ qDebug() << "matched" << match.text(); ++ if (match.text() == "System Settings ServiceRunnerTest") { ++ systemSettingsFound = true; ++ } ++ if (match.text() == "KDE System Settings ServiceRunnerTest") { ++ foreignSystemSettingsFound = true; ++ } ++ } ++ QVERIFY(systemSettingsFound); ++ QVERIFY(!foreignSystemSettingsFound); ++} ++ + QTEST_MAIN(ServiceRunnerTest) + + #include "servicerunnertest.moc" +diff --git a/runners/services/servicerunner.cpp b/runners/services/servicerunner.cpp +index 68756f91..2f840a9b 100644 +--- a/runners/services/servicerunner.cpp ++++ b/runners/services/servicerunner.cpp +@@ -76,7 +76,7 @@ private: + + bool hasSeen(const KService::Ptr &service) + { +- return m_seen.contains(service->storageId()) || ++ return m_seen.contains(service->storageId()) && + m_seen.contains(service->exec()); + } + +@@ -88,6 +88,7 @@ private: + bool disqualify(const KService::Ptr &service) + { + auto ret = hasSeen(service) || service->noDisplay(); ++ qCDebug(RUNNER_SERVICES) << service->name() << "disqualified?" << ret; + seen(service); + return ret; + } +-- +2.11.0 + diff --git a/0002-fix-isOutputRedundant-logic.patch b/0002-fix-isOutputRedundant-logic.patch deleted file mode 100644 index 3582ad3..0000000 --- a/0002-fix-isOutputRedundant-logic.patch +++ /dev/null @@ -1,99 +0,0 @@ -From f4faa6f1547c4994893ac5f7a5c251f2846368f0 Mon Sep 17 00:00:00 2001 -From: Marco Martin -Date: Fri, 27 Jan 2017 16:11:37 +0100 -Subject: [PATCH 2/2] fix isOutputRedundant logic - -Summary: -isOutputRedundant badly failed when two screens had -the exact same geometry (that should be, the base -case for "cloning" screens. -now the logic is: -a screen is redundant if: -* its geometry is contained in another one -* if their resolutions are different, the "biggest" one wins -* if they have the same geometry, the one with the lowest id wins (arbitrary, but gives reproducible behavior and makes the primary -BUG:375507 - -Test Plan: -tested with two screens: -* overlapping, same resolution: the lowest id (0, the primary) wins, the other one doesn't get a view -* overlapping, different resolutions: the biggest one wins -* not overlapping: both get a view - -Reviewers: sebas, #plasma, davidedmundson - -Reviewed By: #plasma, davidedmundson - -Subscribers: davidedmundson, plasma-devel - -Tags: #plasma - -Differential Revision: https://phabricator.kde.org/D4309 ---- - shell/shellcorona.cpp | 35 ++++++++++++++++++++++++++++++----- - 1 file changed, 30 insertions(+), 5 deletions(-) - -diff --git a/shell/shellcorona.cpp b/shell/shellcorona.cpp -index e7060961..25bec235 100644 ---- a/shell/shellcorona.cpp -+++ b/shell/shellcorona.cpp -@@ -717,6 +717,11 @@ void ShellCorona::primaryOutputChanged() - return; - } - -+ //Since the primary screen is considered more important -+ //then the others, having the primary changed may have changed what outputs are redundant and what are not -+ //TODO: for a particular corner case, in which in the same moment the primary screen changes *and* geometries change to make former redundant screens to not be anymore, instead of doinf reconsiderOutputs() here, it may be better to instead put here the adding of new outputs and after the switch dance has been done, at the bottom of this function remove the eventual redundant ones -+ reconsiderOutputs(); -+ - QScreen *oldPrimary = m_desktopViewforId.value(0)->screen(); - QScreen *newPrimary = qGuiApp->primaryScreen(); - if (!newPrimary || newPrimary == oldPrimary) { -@@ -1100,19 +1105,39 @@ void ShellCorona::screenRemoved(QScreen* screen) - bool ShellCorona::isOutputRedundant(QScreen* screen) const - { - Q_ASSERT(screen); -- const QRect geometry = screen->geometry(); -+ const QRect thisGeometry = screen->geometry(); -+ -+ const int thisId = m_screenPool->id(screen->name()); - - //FIXME: QScreen doesn't have any idea of "this qscreen is clone of this other one - //so this ultra inefficient heuristic has to stay until we have a slightly better api -+ //logic is: -+ //a screen is redundant if: -+ //* its geometry is contained in another one -+ //* if their resolutions are different, the "biggest" one wins -+ //* if they have the same geometry, the one with the lowest id wins (arbitrary, but gives reproducible behavior and makes the primary screen win) - foreach (QScreen* s, qGuiApp->screens()) { -+ //don't compare with itself - if (screen == s) { - continue; - } - -- const QRect sGeometry = s->geometry(); -- if (sGeometry.contains(geometry, false) && -- sGeometry.width() > geometry.width() && -- sGeometry.height() > geometry.height()) { -+ const QRect otherGeometry = s->geometry(); -+ -+ const int otherId = m_screenPool->id(s->name()); -+ -+ if (otherGeometry.contains(thisGeometry, false) && -+ (//since at this point contains is true, if either -+ //measure of othergeometry is bigger, has a bigger area -+ otherGeometry.width() > thisGeometry.width() || -+ otherGeometry.height() > thisGeometry.height() || -+ //ids not -1 are considered in descending order of importance -+ //-1 means that is a screen not known yet, just arrived and -+ //not yet in screenpool: this happens for screens that -+ //are hotplugged and weren't known. it does NOT happen -+ //at first startup, as screenpool populates on load with all screens connected at the moment before the rest of the shell starts up -+ (thisId == -1 && otherId != -1) || -+ (thisId > otherId && otherId != -1))) { - return true; - } - } --- -2.11.0 - diff --git a/plasma-workspace-5.9.0.tar.xz b/plasma-workspace-5.9.0.tar.xz deleted file mode 100644 index c12dcd5..0000000 --- a/plasma-workspace-5.9.0.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d8f210bf40c88208802b29ec1660efffe347a55b85e5f2e18ee9f475717ac2d3 -size 6934620 diff --git a/plasma-workspace-5.9.1.tar.xz b/plasma-workspace-5.9.1.tar.xz new file mode 100644 index 0000000..5ed7832 --- /dev/null +++ b/plasma-workspace-5.9.1.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5357a42b1b48546580bc32c7f4c9f80ed61ade8f6b6ce3ba41ba1d3bf46c7d0f +size 6972416 diff --git a/plasma5-workspace.changes b/plasma5-workspace.changes index d5c7218..03c6b98 100644 --- a/plasma5-workspace.changes +++ b/plasma5-workspace.changes @@ -1,3 +1,30 @@ +------------------------------------------------------------------- +Tue Feb 7 18:55:13 CET 2017 - fabian@ritter-vogt.de + +- Update to 5.9.1 + * New feature release + * For more details please see: + * https://www.kde.org/announcements/plasma-5.9.1.php +- Changes since 5.9.0: + * [User Switcher] Ungrab keyboard before trying to lock the screen + * react to config change + * [System Tray Containment] Drop useless Q_INVOKABLE from .cpp file + * [System Tray Containment] Ungrab mouse before opening context menu + * [AppMenu Applet] Map from scene after mapping from global + * Fix memory leak in Appmenu when using compact menu + * [Appmenu Applet] Check whether buttonGrid has a window before calling mapToGlobal + * [Digital Clock] Take into account timezone label width for applet size + * [KRunner] In doubt use primary screen for view position + * Drop legacy fixup rule for VirtualBox. + * fix isOutputRedundant logic + * fix isOutputRedundant logic + * When swapping Wallpapers, save the config to file, not just to propertymap +- Remove patches, now upstream: + * 0001-When-swapping-Wallpapers-save-the-config-to-file-not.patch + * 0002-fix-isOutputRedundant-logic.patch +- Add patch to fix 5.9.0 regression: + * 0001-make-services-disqualification-much-stricter.patch + ------------------------------------------------------------------- Sat Jan 28 15:47:20 UTC 2017 - wbauer@tmo.at diff --git a/plasma5-workspace.spec b/plasma5-workspace.spec index c2fa7b4..ec10ea0 100644 --- a/plasma5-workspace.spec +++ b/plasma5-workspace.spec @@ -20,17 +20,17 @@ %bcond_without lang Name: plasma5-workspace -Version: 5.9.0 +Version: 5.9.1 Release: 0 -# Full Plasma 5 version (e.g. 5.9.0) +# Full Plasma 5 version (e.g. 5.9.1) %{!?_plasma5_bugfix: %global _plasma5_bugfix %{version}} -# Lasted ABI-stable Plasma (e.g. 5.8 in KF5, but 5.9.0 in KUF) +# Lasted ABI-stable Plasma (e.g. 5.8 in KF5, but 5.9.1 in KUF) %{!?_plasma5_version: %global _plasma5_version %(echo %{_plasma5_bugfix} | awk -F. '{print $1"."$2}')} Summary: The KDE Plasma Workspace Components License: GPL-2.0+ Group: System/GUI/KDE Url: http://www.kde.org/ -Source: plasma-workspace-%{version}.tar.xz +Source: http://download.kde.org/stable/plasma/%{version}/plasma-workspace-%{version}.tar.xz Source1: baselibs.conf # PATCH-FIX-OPENSUSE 0001-Rename-qdbus-in-startkde.patch cgiboudeaux@gmx.com -- Rename the qdbus executable in startkde Patch0: 0001-Rename-qdbus-in-startkde.patch @@ -39,10 +39,8 @@ Patch1: change-kioremote-severity.patch # PATCH-FIX-OPENSUSE 0001-Ignore-default-sddm-face-icons.patch boo#1001364 fabian@ritter-vogt.de -- Ignore default sddm face icons Patch2: 0001-Ignore-default-sddm-face-icons.patch # PATCHES 100-200 and above are from upstream 5.9 branch -# PATCH-FIX-UPSTREAM 0001-When-swapping-Wallpapers-save-the-config-to-file-not.patch kde@davidedmundson.co.uk -- When swapping Wallpapers, save the config to file -Patch100: 0001-When-swapping-Wallpapers-save-the-config-to-file-not.patch -# PATCH-FIX-UPSTREAM 0002-fix-isOutputRedundant-logic.patch notmart@gmail.com -- fix isOutputRedundant logic -Patch101: 0002-fix-isOutputRedundant-logic.patch +# PATCH-FIX-UPSTREAM 0001-make-services-disqualification-much-stricter.patch sitter@kde.org -- make services disqualification much stricter +Patch100: 0001-make-services-disqualification-much-stricter.patch # PATCHES 201-300 and above are from upstream master/5.10 branch BuildRequires: breeze5-icons BuildRequires: fdupes @@ -215,7 +213,6 @@ workspace. Development files. %patch1 -p1 %patch2 -p1 %patch100 -p1 -%patch101 -p1 %build %cmake_kf5 -d build -- -DKDE4_COMMON_PAM_SERVICE=xdm -DKDE_DEFAULT_HOME=.kde4 -DCMAKE_INSTALL_LOCALEDIR=%{_kf5_localedir} @@ -346,7 +343,7 @@ workspace. Development files. %if %{with lang} %files lang -f %{name}.lang -%doc %lang(de) %{_kf5_htmldir}/de/ +%doc %lang(ca) %{_kf5_htmldir}/ca/ %endif %changelog