Accepting request 453173 from KDE:Frameworks5

Update to 5.9.0 final tars. Do not publish before tuesday.

OBS-URL: https://build.opensuse.org/request/show/453173
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/plasma5-workspace?expand=0&rev=55
This commit is contained in:
Dominique Leuenberger 2017-01-31 11:25:50 +00:00 committed by Git OBS Bridge
commit 7b681d824b
9 changed files with 285 additions and 80 deletions

View File

@ -1,34 +1,30 @@
diff --git a/startkde/startkde.cmake b/startkde/startkde.cmake
index 91c8a3c..0c658bd 100644
index b7af60b..7ae5f1d 100644
--- a/startkde/startkde.cmake
+++ b/startkde/startkde.cmake
@@ -20,14 +20,14 @@ unset DYLD_FORCE_FLAT_NAMESPACE
# in case we have been started with full pathname spec without being in PATH
bindir=`echo "$0" | sed -n 's,^\(/.*\)/[^/][^/]*$,\1,p'`
if [ -n "$bindir" ]; then
- qbindir=`qtpaths --binaries-dir`
- qdbus=$qbindir/qdbus
+ qbindir=`/usr/bin/qtpaths --binaries-dir`
+ qdbus=$qbindir/qdbus-qt5
case $PATH in
$bindir|$bindir:*|*:$bindir|*:$bindir:*) ;;
*) PATH=$bindir:$PATH; export PATH;;
esac
else
- qdbus=qdbus
+ qdbus=qdbus-qt5
@@ -292,7 +292,7 @@ if test $? -ne 0; then
exit 1
fi
# Check if a KDE session already is running and whether it's possible to connect to X
@@ -291,9 +291,9 @@ export XDG_DATA_DIRS
if $qdbus >/dev/null 2>/dev/null; then
: # ok
else
- echo 'startkde: Could not start D-Bus. Can you call qdbus?' 1>&2
+ echo 'startkde: Could not start D-Bus. Can you call qdbus-qt5?' 1>&2
test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
- xmessage -geometry 500x100 "Could not start D-Bus. Can you call qdbus?"
+ xmessage -geometry 500x100 "Could not start D-Bus. Can you call qdbus-qt5?"
exit 1
fi
-qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit &
+qdbus-qt5 org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit &
# finally, give the session control to the session manager
# see kdebase/ksmserver for the description of the rest of the startup sequence
@@ -325,13 +325,13 @@ if test x"$wait_drkonqi"x = x"true"x ; then
# wait for remaining drkonqi instances with timeout (in seconds)
wait_drkonqi_timeout=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Timeout --default 900`
wait_drkonqi_counter=0
- while qdbus | grep "^[^w]*org.kde.drkonqi" > /dev/null ; do
+ while qdbus-qt5 | grep "^[^w]*org.kde.drkonqi" > /dev/null ; do
sleep 5
wait_drkonqi_counter=$((wait_drkonqi_counter+5))
if test "$wait_drkonqi_counter" -ge "$wait_drkonqi_timeout" ; then
# ask remaining drkonqis to die in a graceful way
- qdbus | grep 'org.kde.drkonqi-' | while read address ; do
- qdbus "$address" "/MainApplication" "quit"
+ qdbus-qt5 | grep 'org.kde.drkonqi-' | while read address ; do
+ qdbus-qt5 "$address" "/MainApplication" "quit"
done
break
fi

View File

@ -0,0 +1,59 @@
From a9f5ada73bf86a145e057eff188f45dfdf61917a Mon Sep 17 00:00:00 2001
From: David Edmundson <kde@davidedmundson.co.uk>
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

View File

@ -0,0 +1,99 @@
From f4faa6f1547c4994893ac5f7a5c251f2846368f0 Mon Sep 17 00:00:00 2001
From: Marco Martin <notmart@gmail.com>
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

View File

@ -1,36 +0,0 @@
From: Fabian Vogt <fabian@ritter-vogt.de>
Subject: Workaround for high load due to animated tray icons
References: kde#356479
When a tray icon name changes, it always does a full lookup, which is expensive.
Add a small QHash as cache to work around this.
diff --git a/applets/systemtray/systemtray.cpp b/applets/systemtray/systemtray.cpp
index 66bb5b4..f440ff0 100644
--- a/applets/systemtray/systemtray.cpp
+++ b/applets/systemtray/systemtray.cpp
@@ -127,8 +127,13 @@ void SystemTray::cleanupTask(const QString &task)
QVariant SystemTray::resolveIcon(const QVariant &variant, const QString &iconThemePath)
{
+ static QHash<QString, QVariant> cache;
if (variant.canConvert<QString>()) {
if (!iconThemePath.isEmpty()) {
+ auto i = cache.find(variant.toString() + iconThemePath);
+ if(i != cache.end())
+ return i.value();
+ qCWarning(SYSTEM_TRAY) << "Cache not hit" << iconThemePath;
const QString path = iconThemePath;
if (!path.isEmpty()) {
// FIXME: If last part of path is not "icons", this won't work!
@@ -136,7 +141,9 @@ QVariant SystemTray::resolveIcon(const QVariant &variant, const QString &iconThe
if (tokens.length() >= 3 && tokens.takeLast() == QLatin1String("icons")) {
const QString appName = tokens.takeLast().toString();
- return QVariant(QIcon(new AppIconEngine(variant.toString(), path, appName)));
+ auto v = QVariant(QIcon(new AppIconEngine(variant.toString(), path, appName)));
+ cache.insert(variant.toString() + iconThemePath, v);
+ return v;
} else {
qCWarning(SYSTEM_TRAY) << "Wrong IconThemePath" << path << ": too short or does not end with 'icons'";
}

View File

@ -13,7 +13,7 @@ Index: plasma-workspace-5.7.95/kioslave/remote/CMakeLists.txt
===================================================================
--- plasma-workspace-5.7.95.orig/kioslave/remote/CMakeLists.txt
+++ plasma-workspace-5.7.95/kioslave/remote/CMakeLists.txt
@@ -11,7 +11,7 @@ set(kio_remote_SRCS
@@ -10,7 +10,7 @@ set(kio_remote_SRCS
ecm_qt_declare_logging_category(kio_remote_SRCS HEADER debug.h
IDENTIFIER KIOREMOTE_LOG
CATEGORY_NAME log_kioremote
@ -21,4 +21,5 @@ Index: plasma-workspace-5.7.95/kioslave/remote/CMakeLists.txt
+ DEFAULT_SEVERITY Debug)
add_library(kio_remote MODULE ${kio_remote_SRCS})
target_link_libraries(kio_remote KF5::KIOCore KF5::KDELibs4Support)
target_link_libraries(kio_remote KF5::KIOCore KF5::I18n)

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6d25077205436e3e721d7dfa4dffce7aea62a6e652ee7897952885e52b2f6ea1
size 6989928

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d8f210bf40c88208802b29ec1660efffe347a55b85e5f2e18ee9f475717ac2d3
size 6934620

View File

@ -1,3 +1,81 @@
-------------------------------------------------------------------
Sat Jan 28 15:47:20 UTC 2017 - wbauer@tmo.at
- Add cmake(KF5Prison) build requirement to enable the clipboard's
barcode generation feature
-------------------------------------------------------------------
Sat Jan 28 09:44:48 UTC 2017 - fabian@ritter-vogt.de
- Bump required KF5 version to 5.29
- Add upstream patch to fix some multiscreen issues:
* 0002-fix-isOutputRedundant-logic.patch
-------------------------------------------------------------------
Thu Jan 26 19:59:03 CET 2017 - fabian@ritter-vogt.de
- Update to 5.9.0
* New feature release
* For more details please see:
* https://www.kde.org/announcements/plasma-5.9.0.php
- Add upstream patch to fix kde#375532:
* 0001-When-swapping-Wallpapers-save-the-config-to-file-not.patch
- Changes since 5.8.95:
* [Icon Applet] Use KIO::statJob to work with remote URLs
* Fix group parents not appearing when disabling inline grouping.
* [Image Wallpaper] Provide fallback for thumbnail size of no "plasmoid" around
* only reset the model after componentComplete()
* [lookandfeel] Breeze window decoration
* Fix "Unpin" for tasks pinned to specific activities.
* applets/icon: Set i18n domain (patch by Victor<victorr2007@narod.ru>)
* use Q_FOREACH in this branch
* Corona::screenGeometryChanged on qscreen resized
* add #include <QtQml> for old Qt versions
* Replace std::bind with lambda.
* try to put annotations before parameters definition
* fix dbus xml compilation
* guard against menu being deleted whilst updating
* Hide menu if the menu disappears off DBus
* Don't re-evaluate the model constantly whilst looping through windows
* Generate DBusMenu Interface for libdbusmenuqt
* pre-load the first layer of sub menus
* Signal which menu has updated in libdbusmenu-qt
* Don't hide applet when it needs configuring
* Don't load menu when switching window focus to the desktop
* Keep AppletMenu as small as possible
* Fix calling KWindowSystem::windowType without fetching the type
* Enable Edit Action in plasmoid mode
* Fix mapToGlobal
* Show "All Widgets" even when showSpecialFilters=false.
* [Icon Applet] Rename open() to run() to fix compilation on 32-bit
-------------------------------------------------------------------
Thu Jan 12 20:39:58 UTC 2017 - fabian@ritter-vogt.de
- Update to 5.8.95 (Plasma 5.9 Beta)
* New feature release
* For more details please see:
https://www.kde.org/announcements/plasma-5.8.95.php
- Changes:
* See https://www.kde.org/announcements/plasma-5.8.5-5.8.95-changelog.php#plasma-workspace
- Remove patches, now upstream:
* 0001-better-clean-up-of-duplicate-containments.patch
- Workaround made unnecessary by upstream commits:
* add-tray-icon-cache.patch
-------------------------------------------------------------------
Tue Jan 10 20:42:09 UTC 2017 - fabian@ritter-vogt.de
- Add experimental patch to fix some dangling duplicate
containments in the -appletsrc:
* 0001-better-clean-up-of-duplicate-containments.patch
-------------------------------------------------------------------
Thu Dec 29 11:41:27 UTC 2016 - tittiatcoke@gmail.com
- Require also the main package from the devel package. This is
required to get the required layouts for the servicetypes.
-------------------------------------------------------------------
Tue Dec 27 18:31:45 UTC 2016 - fabian@ritter-vogt.de

View File

@ -1,7 +1,7 @@
#
# spec file for package plasma5-workspace
#
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -16,21 +16,21 @@
#
%define kf5_version 5.26.0
%define kf5_version 5.29.0
%bcond_without lang
Name: plasma5-workspace
Version: 5.8.5
Version: 5.9.0
Release: 0
# Full Plasma 5 version (e.g. 5.8.5)
# Full Plasma 5 version (e.g. 5.9.0)
%{!?_plasma5_bugfix: %global _plasma5_bugfix %{version}}
# Lasted ABI-stable Plasma (e.g. 5.8 in KF5, but 5.8.90 in KUF)
# Lasted ABI-stable Plasma (e.g. 5.8 in KF5, but 5.9.0 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: http://download.kde.org/stable/plasma/%{version}/plasma-workspace-%{version}.tar.xz
Source: 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
@ -38,10 +38,12 @@ Patch0: 0001-Rename-qdbus-in-startkde.patch
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
# PATCH-FIX-OPENSUSE add-tray-icon-cache.patch kde#356479 fabian@ritter-vogt.de -- Workaround for high load due to animated tray icons
Patch3: add-tray-icon-cache.patch
# PATCHES 100-200 and above are from upstream 5.8 branch
# PATCHES 201-300 and above are from upstream master/5.9 branch
# 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
# PATCHES 201-300 and above are from upstream master/5.10 branch
BuildRequires: breeze5-icons
BuildRequires: fdupes
BuildRequires: kf5-filesystem
@ -67,6 +69,7 @@ BuildRequires: cmake(KF5NotifyConfig) >= %{kf5_version}
BuildRequires: cmake(KF5Package) >= %{kf5_version}
BuildRequires: cmake(KF5Plasma) >= %{kf5_version}
BuildRequires: cmake(KF5PlasmaQuick)
BuildRequires: cmake(KF5Prison) >= %{kf5_version}
BuildRequires: cmake(KF5Runner) >= %{kf5_version}
BuildRequires: cmake(KF5Screen) >= 5.0.93
BuildRequires: cmake(KF5Solid) >= %{kf5_version}
@ -188,6 +191,7 @@ workspace.
%package devel
Summary: The KDE Plasma Workspace Components
Group: Development/Libraries/KDE
Requires: %{name} >= %{version}
Requires: %{name}-libs = %{version}-%{release}
Requires: cmake(KF5SysGuard) >= %{_plasma5_version}
Requires: cmake(KF5Wayland) >= %{kf5_version}
@ -210,7 +214,8 @@ workspace. Development files.
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch100 -p1
%patch101 -p1
%build
%cmake_kf5 -d build -- -DKDE4_COMMON_PAM_SERVICE=xdm -DKDE_DEFAULT_HOME=.kde4 -DCMAKE_INSTALL_LOCALEDIR=%{_kf5_localedir}
@ -279,11 +284,13 @@ workspace. Development files.
%{_kf5_libdir}/libexec/ksyncdbusenv
%{_kf5_libdir}/libexec/startplasma
%{_kf5_libdir}/libexec/ksmserver-logout-greeter
%{_kf5_libdir}/libexec/ksmserver-switchuser-greeter
%{_kf5_libdir}/libkdeinit5_kcminit.so
%{_kf5_libdir}/libkdeinit5_kcminit_startup.so
%{_kf5_libdir}/libkdeinit5_klipper.so
%{_kf5_libdir}/libkdeinit5_ksmserver.so
%{_kf5_libdir}/libkdeinit5_kuiserver5.so
%{_kf5_libdir}/kconf_update_bin/krunnerplugins
%{_kf5_plugindir}/
%{_kf5_qmldir}/
%{_kf5_applicationsdir}/org.kde.klipper.desktop
@ -292,6 +299,7 @@ workspace. Development files.
%{_kf5_sharedir}/dbus-1/services/kf5_org.kde.kuiserver.service
%{_kf5_sharedir}/dbus-1/services/org.kde.krunner.service
%{_kf5_sharedir}/desktop-directories/
%{_kf5_sharedir}/kconf_update/
%dir %{_kf5_htmldir}
%dir %lang(en) %{_kf5_htmldir}/en
%doc %lang(en) %{_kf5_htmldir}/en/klipper/