summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'kde-plasma/plasma-desktop/files')
-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
3 files changed, 133 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);