diff options
author | Andreas Sturmlechner <asturm@gentoo.org> | 2017-01-08 14:06:57 +0100 |
---|---|---|
committer | Andreas Sturmlechner <asturm@gentoo.org> | 2017-01-08 15:22:59 +0100 |
commit | bf31d2035f1bdc787ab0323ac7cd756f189436d8 (patch) | |
tree | 0711044f74920510ab2ddae7068feaad25b41ac2 /kde-plasma/plasma-desktop | |
parent | app-backup/kbackup: Version bump 1.0 (diff) | |
download | gentoo-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')
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 +} |