From bf31d2035f1bdc787ab0323ac7cd756f189436d8 Mon Sep 17 00:00:00 2001 From: Andreas Sturmlechner Date: Sun, 8 Jan 2017 14:06:57 +0100 Subject: 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 --- .../files/plasma-desktop-5.8.5-crashfix.patch | 57 +++++++ .../files/plasma-desktop-5.8.5-hover-state.patch | 33 +++++ .../plasma-desktop-5.8.5-taskman-memleak.patch | 43 ++++++ .../plasma-desktop/plasma-desktop-5.8.5-r1.ebuild | 165 +++++++++++++++++++++ 4 files changed, 298 insertions(+) create mode 100644 kde-plasma/plasma-desktop/files/plasma-desktop-5.8.5-crashfix.patch create mode 100644 kde-plasma/plasma-desktop/files/plasma-desktop-5.8.5-hover-state.patch create mode 100644 kde-plasma/plasma-desktop/files/plasma-desktop-5.8.5-taskman-memleak.patch create mode 100644 kde-plasma/plasma-desktop/plasma-desktop-5.8.5-r1.ebuild (limited to 'kde-plasma') 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 +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 +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 +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 + !