commit:     bf31d2035f1bdc787ab0323ac7cd756f189436d8
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sun Jan  8 13:06:57 2017 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sun Jan  8 14:22:59 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bf31d203

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(+)

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 00000000..9e4bdd9
--- /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 <k...@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 00000000..5e645c5
--- /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 <h...@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:k...@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 00000000..b112edc
--- /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 <k...@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 00000000..4444dc0
--- /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
+}

Reply via email to