git » kdeplasma-addons.git » commit d34c957

Fix broken launchers in icontasks (FS#36853)

author Andrea Scarpino
2013-09-10 22:37:20 UTC
committer Andrea Scarpino
2013-09-10 22:37:20 UTC
parent 99447b9ae1d527a4f0178bc6cd58de28a7bfc6bd

Fix broken launchers in icontasks (FS#36853)

PKGBUILD +12 -4
kdebug-324661.patch +76 -0

diff --git a/PKGBUILD b/PKGBUILD
index d90b84d..6231d90 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -77,18 +77,26 @@ pkgname=('kdeplasma-addons-applets-bball'
          'kdeplasma-addons-wallpapers-virus'
          'kdeplasma-addons-wallpapers-weather')
 pkgver=4.11.1
-pkgrel=1
+pkgrel=2
 arch=('i686' 'x86_64')
 url='https://projects.kde.org/projects/kde/kdeplasma-addons'
 license=('GPL' 'LGPL')
 groups=('kde' 'kdeplasma-addons')
 makedepends=('cmake' 'automoc4' 'kdebase-workspace' 'kdeedu-marble' 'eigen'
              'scim' 'qwt' 'boost' 'libkexiv2' 'ibus' 'qoauth' 'mesa')
-source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.xz")
-sha1sums=('ac6cc243fe0bacce77b9286269dde9b342eb5ddd')
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.xz"
+        'kdebug-324661.patch')
+sha1sums=('ac6cc243fe0bacce77b9286269dde9b342eb5ddd'
+          'fc274d87f7e39cde2c19570b6e38666b95050a9d')
+
+prepare() {
+  mkdir build
+
+  cd ${pkgbase}-${pkgver}
+  patch -p1 -i "${srcdir}"/kdebug-324661.patch
+}
 
 build() {
-	mkdir build
 	cd build
 	cmake ../${pkgbase}-${pkgver} \
 		-DCMAKE_BUILD_TYPE=Release \
diff --git a/kdebug-324661.patch b/kdebug-324661.patch
new file mode 100644
index 0000000..92de3fc
--- /dev/null
+++ b/kdebug-324661.patch
@@ -0,0 +1,76 @@
+commit 7c3011e0a6459c00cf9d06d74da3a32f87f1a2f6
+Author: Eike Hein <hein@kde.org>
+Date:   Mon Sep 9 23:12:45 2013 +0200
+
+    Spin the event loop before destroying the menu.
+    
+    This allows the menu implementation to complete toggling the
+    launcher before the instance is destroyed. It's extremely un-
+    fortunate that the library currently requires this careful
+    handling; see e944d7ae in kde-workspace for a note on what
+    needs to be cleaned up there.
+    
+    BUG:324661
+
+diff --git a/applets/icontasks/windowtaskitem.cpp b/applets/icontasks/windowtaskitem.cpp
+index 970c19f..61b39ef 100644
+--- a/applets/icontasks/windowtaskitem.cpp
++++ b/applets/icontasks/windowtaskitem.cpp
+@@ -406,17 +406,18 @@ void WindowTaskItem::showContextMenu(const QPoint &pos, bool showAppMenu)
+         actionList.append(configAction);
+     }
+ 
+-    TaskManager::BasicMenu menu(0, m_task.data(), &m_applet->groupManager(), actionList, showAppMenu ? getAppMenu() : QList <QAction*>());
+-    menu.adjustSize();
++    TaskManager::BasicMenu * menu = new TaskManager::BasicMenu(0, m_task.data(), &m_applet->groupManager(), actionList, showAppMenu ? getAppMenu() : QList <QAction*>());
++    menu->adjustSize();
+ 
+     if (m_applet->formFactor() != Plasma::Vertical) {
+-        menu.setMinimumWidth(size().width());
++        menu->setMinimumWidth(size().width());
+     }
+ 
+     Q_ASSERT(m_applet->containment());
+     Q_ASSERT(m_applet->containment()->corona());
+     stopWindowHoverEffect();
+-    menu.exec(pos.isNull() ? m_applet->containment()->corona()->popupPosition(this, menu.size()) : pos);
++    menu->exec(pos.isNull() ? m_applet->containment()->corona()->popupPosition(this, menu->size()) : pos);
++    menu->deleteLater();
+     delete a;
+ }
+ 
+commit b56d1552e9a8f8efe8fb8fd641126e78627c61a9
+Author: Eike Hein <hein@kde.org>
+Date:   Mon Sep 9 23:33:30 2013 +0200
+
+    Fix it for non-running items too.
+    
+    BUG:324661
+
+diff --git a/applets/icontasks/applauncheritem.cpp b/applets/icontasks/applauncheritem.cpp
+index b5f646c..f721b5a 100644
+--- a/applets/icontasks/applauncheritem.cpp
++++ b/applets/icontasks/applauncheritem.cpp
+@@ -100,17 +100,18 @@ void AppLauncherItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *e)
+         actionList.append(configAction);
+     }
+ 
+-    TaskManager::BasicMenu menu(0, m_launcher, &m_applet->groupManager(), actionList, getAppMenu());
+-    menu.adjustSize();
++    TaskManager::BasicMenu *menu = new TaskManager::BasicMenu(0, m_launcher, &m_applet->groupManager(), actionList, getAppMenu());
++    menu->adjustSize();
+ 
+     if (m_applet->formFactor() != Plasma::Vertical) {
+-        menu.setMinimumWidth(size().width());
++        menu->setMinimumWidth(size().width());
+     }
+ 
+     Q_ASSERT(m_applet->containment());
+     Q_ASSERT(m_applet->containment()->corona());
+     stopWindowHoverEffect();
+-    menu.exec(m_applet->containment()->corona()->popupPosition(this, menu.size()));
++    menu->exec(m_applet->containment()->corona()->popupPosition(this, menu->size()));
++    menu->deleteLater();
+ }
+ 
+