summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sturmlechner <asturm@gentoo.org>2017-01-08 14:06:57 +0100
committerAndreas Sturmlechner <asturm@gentoo.org>2017-01-08 15:22:59 +0100
commitbf31d2035f1bdc787ab0323ac7cd756f189436d8 (patch)
tree0711044f74920510ab2ddae7068feaad25b41ac2 /kde-plasma/plasma-desktop
parentapp-backup/kbackup: Version bump 1.0 (diff)
downloadgentoo-bf31d2035f1bdc787ab0323ac7cd756f189436d8.tar.gz
gentoo-bf31d2035f1bdc787ab0323ac7cd756f189436d8.tar.bz2
gentoo-bf31d2035f1bdc787ab0323ac7cd756f189436d8.zip
kde-plasma/plasma-desktop: Backport some fixes
- containment hover regression from 5.8.5 - plasmashell crash with invisible virtual desktop pager - taskbar memleak Package-Manager: portage-2.3.0
Diffstat (limited to 'kde-plasma/plasma-desktop')
-rw-r--r--kde-plasma/plasma-desktop/files/plasma-desktop-5.8.5-crashfix.patch57
-rw-r--r--kde-plasma/plasma-desktop/files/plasma-desktop-5.8.5-hover-state.patch33
-rw-r--r--kde-plasma/plasma-desktop/files/plasma-desktop-5.8.5-taskman-memleak.patch43
-rw-r--r--kde-plasma/plasma-desktop/plasma-desktop-5.8.5-r1.ebuild165
4 files changed, 298 insertions, 0 deletions
diff --git a/kde-plasma/plasma-desktop/files/plasma-desktop-5.8.5-crashfix.patch b/kde-plasma/plasma-desktop/files/plasma-desktop-5.8.5-crashfix.patch
new file mode 100644
index 000000000000..9e4bdd99f5c4
--- /dev/null
+++ b/kde-plasma/plasma-desktop/files/plasma-desktop-5.8.5-crashfix.patch
@@ -0,0 +1,57 @@
+commit d674ede6e5f22281fa2461546ddc25ff5f3a7015
+Author: Kai Uwe Broulik <kde@privat.broulik.de>
+Date: Tue Jan 3 09:38:50 2017 +0100
+
+ [Panel Containment] Explicitly bind visible on both the container and the applet
+
+ While trying to fix a random plasmashell crash I was getting fairly often (and I hoped
+ was fixed by David's last spacer fix) I found that the cause was actually in virtual desktop pager.
+
+ The virtual desktop pager is hidden when there's just one desktop and it will not update its
+ models in this case to save resources. Back when I added this I already noticed that sometimes
+ the pager (usually after one "open and close panelcontroller" cycle) still thought it was visible.
+ It was even weirder than that, I found out that on teardown it suddenly thought it became visible.
+ This had it populate its model which in turn spawned QML items, all of this whilst the panel was
+ already in the process of destroying its children, leading to a crash.
+
+ Differential Revision: https://phabricator.kde.org/D3897
+
+diff --git a/containments/panel/contents/ui/main.qml b/containments/panel/contents/ui/main.qml
+index e9afa86..5bb5283 100644
+--- a/containments/panel/contents/ui/main.qml
++++ b/containments/panel/contents/ui/main.qml
+@@ -54,20 +54,27 @@ DragDrop.DropArea {
+
+ //BEGIN functions
+ function addApplet(applet, x, y) {
++ // don't show applet if it choses to be hidden but still make it
++ // accessible in the panelcontroller
++ // Due to the nature of how "visible" propagates in QML, we need to
++ // explicitly set it on the container (so the Layout ignores it)
++ // as well as the applet (so it reliably knows about), otherwise it can
++ // happen that an applet erroneously thinks it's visible, or suddenly
++ // starts thinking that way on teardown (virtual desktop pager)
++ // leading to crashes
++ var visibleBinding = Qt.binding(function() {
++ return applet.status !== PlasmaCore.Types.HiddenStatus || (!plasmoid.immutable && plasmoid.userConfiguring);
++ })
++
+ var container = appletContainerComponent.createObject(root, {
+ applet: applet,
+-
+- // don't show applet if it choses to be hidden but still make it
+- // accessible in the panelcontroller
+- visible: Qt.binding(function() {
+- return applet.status !== PlasmaCore.Types.HiddenStatus || (!plasmoid.immutable && plasmoid.userConfiguring)
+- })
++ visible: visibleBinding
+ });
+
+ applet.parent = container;
+ applet.anchors.fill = container;
+
+- applet.visible = true;
++ applet.visible = visibleBinding;
+
+ // Is there a DND placeholder? Replace it!
+ if (dndSpacer.parent === currentLayout) {
diff --git a/kde-plasma/plasma-desktop/files/plasma-desktop-5.8.5-hover-state.patch b/kde-plasma/plasma-desktop/files/plasma-desktop-5.8.5-hover-state.patch
new file mode 100644
index 000000000000..5e645c51b063
--- /dev/null
+++ b/kde-plasma/plasma-desktop/files/plasma-desktop-5.8.5-hover-state.patch
@@ -0,0 +1,33 @@
+commit e80a4b87cfa98708724942794ca6f051974bb5c0
+Author: Eike Hein <hein@kde.org>
+Date: Tue Jan 3 16:30:54 2017 +0900
+
+ Don't clear hover state while a child dialog is open.
+
+ Otherwise it won't stay open.
+
+ Fixes regression from 7585f295363532eff51f7e11ef6b62925117aba4.
+
+ The bug number referenced in the original change is invalid, but
+ I don't think this should invalidate the intent of that fix. Kai
+ please let me know the correct bug number so I can double-check.
+
+ BUG:374291
+ CCMAIL:kde@privat.broulik.de
+
+diff --git a/containments/desktop/package/contents/ui/FolderView.qml b/containments/desktop/package/contents/ui/FolderView.qml
+index 1fd8dbb..8936532 100644
+--- a/containments/desktop/package/contents/ui/FolderView.qml
++++ b/containments/desktop/package/contents/ui/FolderView.qml
+@@ -343,7 +343,10 @@ Item {
+ onContainsMouseChanged: {
+ if (!containsMouse && !main.rubberBand) {
+ clearPressState();
+- gridView.hoveredItem = null;
++
++ if (gridView.hoveredItem && !gridView.hoveredItem.popupDialog) {
++ gridView.hoveredItem = null;
++ }
+ }
+ }
+
diff --git a/kde-plasma/plasma-desktop/files/plasma-desktop-5.8.5-taskman-memleak.patch b/kde-plasma/plasma-desktop/files/plasma-desktop-5.8.5-taskman-memleak.patch
new file mode 100644
index 000000000000..b112edced777
--- /dev/null
+++ b/kde-plasma/plasma-desktop/files/plasma-desktop-5.8.5-taskman-memleak.patch
@@ -0,0 +1,43 @@
+commit 58e932c607db27bea2872625661991fb16c79d13
+Author: Kai Uwe Broulik <kde@privat.broulik.de>
+Date: Tue Jan 3 09:37:38 2017 +0100
+
+ [Task Manager] Parent QAction to "parent" instead of this
+
+ This ensures the QAction is disposed of once the menu gets destroyed rather than
+ accumulating forever - the methods already took a "parent" argument,
+ which is passed the menu from QML side, for exactly that purpose.
+
+ Differential Revision: https://phabricator.kde.org/D3816
+
+diff --git a/applets/taskmanager/plugin/backend.cpp b/applets/taskmanager/plugin/backend.cpp
+index 16f1f57..efbd095 100644
+--- a/applets/taskmanager/plugin/backend.cpp
++++ b/applets/taskmanager/plugin/backend.cpp
+@@ -142,7 +142,7 @@ QVariantList Backend::jumpListActions(const QUrl &launcherUrl, QObject *parent)
+ continue;
+ }
+
+- QAction *action = new QAction(this);
++ QAction *action = new QAction(parent);
+ action->setText(name);
+ action->setIcon(QIcon::fromTheme(actionGroup.readEntry("Icon")));
+ action->setProperty("exec", exec);
+@@ -204,7 +204,7 @@ QVariantList Backend::recentDocumentActions(const QUrl &launcherUrl, QObject *pa
+ continue;
+ }
+
+- QAction *action = new QAction(this);
++ QAction *action = new QAction(parent);
+ action->setText(url.fileName());
+ action->setIcon(QIcon::fromTheme(fileItem.iconName(), QIcon::fromTheme("unknown")));
+ action->setProperty("agent", storageId);
+@@ -219,7 +219,7 @@ QVariantList Backend::recentDocumentActions(const QUrl &launcherUrl, QObject *pa
+ }
+
+ if (actionCount > 0) {
+- QAction *action = new QAction(this);
++ QAction *action = new QAction(parent);
+ action->setText(i18n("Forget Recent Documents"));
+ action->setProperty("agent", storageId);
+ connect(action, &QAction::triggered, this, &Backend::handleRecentDocumentAction);
diff --git a/kde-plasma/plasma-desktop/plasma-desktop-5.8.5-r1.ebuild b/kde-plasma/plasma-desktop/plasma-desktop-5.8.5-r1.ebuild
new file mode 100644
index 000000000000..4444dc0aebde
--- /dev/null
+++ b/kde-plasma/plasma-desktop/plasma-desktop-5.8.5-r1.ebuild
@@ -0,0 +1,165 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+KDE_HANDBOOK="forceoptional"
+KDE_TEST="true"
+VIRTUALX_REQUIRED="test"
+inherit kde5
+
+DESCRIPTION="KDE Plasma desktop"
+KEYWORDS="~amd64 ~arm ~x86"
+IUSE="+fontconfig gtk2 gtk3 +input_devices_evdev input_devices_synaptics ibus
+legacy-systray packagekit pulseaudio +qt4 scim +semantic-desktop"
+
+COMMON_DEPEND="
+ $(add_frameworks_dep attica)
+ $(add_frameworks_dep kactivities)
+ $(add_frameworks_dep kactivities-stats)
+ $(add_frameworks_dep karchive)
+ $(add_frameworks_dep kauth)
+ $(add_frameworks_dep kbookmarks)
+ $(add_frameworks_dep kcmutils)
+ $(add_frameworks_dep kcodecs)
+ $(add_frameworks_dep kcompletion)
+ $(add_frameworks_dep kconfig)
+ $(add_frameworks_dep kconfigwidgets)
+ $(add_frameworks_dep kcoreaddons)
+ $(add_frameworks_dep kdbusaddons)
+ $(add_frameworks_dep kdeclarative)
+ $(add_frameworks_dep kded)
+ $(add_frameworks_dep kdelibs4support)
+ $(add_frameworks_dep kemoticons)
+ $(add_frameworks_dep kglobalaccel)
+ $(add_frameworks_dep kguiaddons)
+ $(add_frameworks_dep ki18n)
+ $(add_frameworks_dep kiconthemes)
+ $(add_frameworks_dep kio)
+ $(add_frameworks_dep kitemmodels)
+ $(add_frameworks_dep kitemviews)
+ $(add_frameworks_dep kjobwidgets)
+ $(add_frameworks_dep knewstuff)
+ $(add_frameworks_dep knotifications)
+ $(add_frameworks_dep knotifyconfig)
+ $(add_frameworks_dep kparts)
+ $(add_frameworks_dep kpeople)
+ $(add_frameworks_dep krunner)
+ $(add_frameworks_dep kservice)
+ $(add_frameworks_dep kwallet)
+ $(add_frameworks_dep kwidgetsaddons)
+ $(add_frameworks_dep kwindowsystem)
+ $(add_frameworks_dep kxmlgui)
+ $(add_frameworks_dep plasma)
+ $(add_frameworks_dep solid)
+ $(add_frameworks_dep sonnet)
+ $(add_plasma_dep kwin)
+ $(add_plasma_dep plasma-workspace)
+ $(add_qt_dep qtconcurrent)
+ $(add_qt_dep qtdbus)
+ $(add_qt_dep qtdeclarative)
+ $(add_qt_dep qtgui)
+ $(add_qt_dep qtnetwork)
+ $(add_qt_dep qtprintsupport)
+ $(add_qt_dep qtsql)
+ $(add_qt_dep qtsvg)
+ $(add_qt_dep qtwidgets)
+ $(add_qt_dep qtx11extras)
+ $(add_qt_dep qtxml)
+ media-libs/phonon[qt5]
+ x11-libs/libX11
+ x11-libs/libXcursor
+ x11-libs/libXfixes
+ x11-libs/libXi
+ x11-libs/libxcb
+ x11-libs/libxkbfile
+ fontconfig? (
+ media-libs/fontconfig
+ media-libs/freetype
+ x11-libs/libXft
+ x11-libs/xcb-util-image
+ )
+ ibus? (
+ $(add_qt_dep qtx11extras)
+ app-i18n/ibus
+ dev-libs/glib:2
+ x11-libs/libxcb
+ x11-libs/xcb-util-keysyms
+ )
+ input_devices_synaptics? ( x11-drivers/xf86-input-synaptics )
+ packagekit? ( >=app-admin/packagekit-qt-0.9.6 )
+ pulseaudio? (
+ dev-libs/glib:2
+ media-libs/libcanberra
+ media-sound/pulseaudio
+ )
+ scim? ( app-i18n/scim )
+ semantic-desktop? ( $(add_frameworks_dep baloo) )
+"
+RDEPEND="${COMMON_DEPEND}
+ $(add_plasma_dep breeze)
+ $(add_plasma_dep kde-cli-tools)
+ $(add_plasma_dep oxygen)
+ $(add_qt_dep qtgraphicaleffects)
+ sys-apps/accountsservice
+ x11-apps/setxkbmap
+ legacy-systray? (
+ gtk2? ( dev-libs/libappindicator:2 )
+ gtk3? ( dev-libs/libappindicator:3 )
+ qt4? ( dev-libs/sni-qt )
+ )
+ pulseaudio? ( $(add_plasma_dep plasma-pa ) )
+ qt4? ( kde-plasma/qguiplatformplugin_kde:4 )
+ !kde-apps/kcontrol
+ !kde-apps/kdepasswd:4
+ !kde-apps/knetattach[handbook]
+ !kde-base/plasma-desktop:4
+ !kde-plasma/plasma-workspace:4
+ !kde-plasma/solid-actions-kcm:4
+ !kde-plasma/systemsettings:4
+ !kde-misc/kcm_touchpad
+ !kde-misc/kcm-touchpad
+ !kde-plasma/kcm-touchpad
+ !<kde-plasma/kdeplasma-addons-5.5.50
+"
+DEPEND="${COMMON_DEPEND}
+ dev-libs/boost
+ x11-proto/xproto
+ fontconfig? ( x11-libs/libXrender )
+ input_devices_evdev? ( x11-drivers/xf86-input-evdev )
+"
+
+REQUIRED_USE="legacy-systray? ( || ( gtk2 gtk3 qt4 ) ) gtk2? ( legacy-systray ) gtk3? ( legacy-systray )"
+
+PATCHES=(
+ # stable branch
+ "${FILESDIR}/${P}-hover-state.patch"
+ "${FILESDIR}/${P}-taskman-memleak.patch"
+ "${FILESDIR}/${P}-crashfix.patch"
+ #master
+ "${FILESDIR}/${PN}-5.7.90-baloo-optional.patch"
+)
+
+pkg_setup() {
+ if has_version net-im/skype && use legacy-systray && use amd64; then
+ einfo
+ elog "You need to install dev-libs/sni-qt[abi_x86_32] as skype is a 32-bit binary."
+ einfo
+ fi
+}
+
+src_configure() {
+ local mycmakeargs=(
+ $(cmake-utils_use_find_package fontconfig Fontconfig)
+ $(cmake-utils_use_find_package ibus IBus)
+ $(cmake-utils_use_find_package input_devices_evdev Evdev)
+ $(cmake-utils_use_find_package input_devices_synaptics Synaptics)
+ $(cmake-utils_use_find_package packagekit PackageKitQt5)
+ $(cmake-utils_use_find_package pulseaudio PulseAudio)
+ $(cmake-utils_use_find_package scim SCIM)
+ $(cmake-utils_use_find_package semantic-desktop KF5Baloo)
+ )
+
+ kde5_src_configure
+}