summaryrefslogtreecommitdiff
path: root/extra/kdebase-workspace
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2012-09-07 00:03:53 +0000
committerroot <root@rshg054.dnsready.net>2012-09-07 00:03:53 +0000
commited51a8c1611ffa602f5f9628c858f6edbc218fc8 (patch)
tree9da1c83153c6a7313cc5fbdc6a361083051e9f1d /extra/kdebase-workspace
parent3a491cfc574c49ee5f006f74323b6d432d372ab8 (diff)
Fri Sep 7 00:03:53 UTC 2012
Diffstat (limited to 'extra/kdebase-workspace')
-rw-r--r--extra/kdebase-workspace/PKGBUILD17
-rw-r--r--extra/kdebase-workspace/fix-freeze.patch56
2 files changed, 67 insertions, 6 deletions
diff --git a/extra/kdebase-workspace/PKGBUILD b/extra/kdebase-workspace/PKGBUILD
index 4f4125954..9363a4fea 100644
--- a/extra/kdebase-workspace/PKGBUILD
+++ b/extra/kdebase-workspace/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 164857 2012-08-06 23:14:44Z andrea $
+# $Id: PKGBUILD 166216 2012-09-05 18:28:21Z andrea $
# Maintainer: Andrea Scarpino <andrea@archlinux.org>
# Contributor: Pierre Schmitz <pierre@archlinux.de>
pkgname=kdebase-workspace
_pkgname=kde-workspace
-pkgver=4.9.0
-pkgrel=1
+pkgver=4.9.1
+pkgrel=3
pkgdesc="Provides the interface and basic tools for the KDE workspace"
arch=('i686' 'x86_64')
url='https://projects.kde.org/projects/kde/kde-workspace'
@@ -29,8 +29,9 @@ backup=('usr/share/config/kdm/kdmrc'
options=('emptydirs')
source=("http://download.kde.org/stable/${pkgver}/src/${_pkgname}-${pkgver}.tar.xz"
'kdm' 'kde.pam' 'kde-np.pam' 'kscreensaver.pam' 'kdm.service'
- 'fixpath.patch' 'terminate-server.patch' 'kdm-xinitrd.patch')
-sha1sums=('fa614c7f59a43e24e09229374c4193eea86f6865'
+ 'fixpath.patch' 'terminate-server.patch' 'kdm-xinitrd.patch'
+ 'fix-freeze.patch')
+sha1sums=('ac1753e2264246ec6347961f44b0aae07072dbb4'
'5db3a245201bd4a50e65aa2ef583cf5490e4f646'
'712a90999bd429883dcef5dcaf288aace332ced8'
'b321b5e613b60231330e606fdf1e124646148388'
@@ -38,13 +39,17 @@ sha1sums=('fa614c7f59a43e24e09229374c4193eea86f6865'
'b6f8e8692737b11eec1f8022ce74b5b23e247b1b'
'd7b5883f7e65c6839b1f65f94d58026673dd0226'
'ac7bc292c865bc1ab8c02e6341aa7aeaf1a3eeee'
- 'd509dac592bd8b310df27991b208c95b6d907514')
+ 'd509dac592bd8b310df27991b208c95b6d907514'
+ '820135367cc577a8557061b9844d3ce4a5fde90f')
build() {
cd "${srcdir}"/${_pkgname}-${pkgver}
patch -p1 -i "${srcdir}"/kdm-xinitrd.patch
patch -p0 -i "${srcdir}"/fixpath.patch
patch -p0 -i "${srcdir}"/terminate-server.patch
+
+ # KDEBUG 306260
+ patch -p1 -i "${srcdir}"/fix-freeze.patch
cd "${srcdir}"
mkdir build
diff --git a/extra/kdebase-workspace/fix-freeze.patch b/extra/kdebase-workspace/fix-freeze.patch
new file mode 100644
index 000000000..1926baebc
--- /dev/null
+++ b/extra/kdebase-workspace/fix-freeze.patch
@@ -0,0 +1,56 @@
+diff --git a/kwin/tabbox/clientmodel.cpp b/kwin/tabbox/clientmodel.cpp
+index 9591bab..a67d979 100644
+--- a/kwin/tabbox/clientmodel.cpp
++++ b/kwin/tabbox/clientmodel.cpp
+@@ -188,7 +188,7 @@ void ClientModel::createClientList(int desktop, bool partialReset)
+ switch(tabBox->config().clientSwitchingMode()) {
+ case TabBoxConfig::FocusChainSwitching: {
+ TabBoxClient* c = start;
+- if (!c) {
++ if (!tabBox->isInFocusChain(c)) {
+ QSharedPointer<TabBoxClient> firstClient = tabBox->firstClientFocusChain().toStrongRef();
+ if (firstClient) {
+ c = firstClient.data();
+diff --git a/kwin/tabbox/tabbox.cpp b/kwin/tabbox/tabbox.cpp
+index d96d0bd..7a08d37 100644
+--- a/kwin/tabbox/tabbox.cpp
++++ b/kwin/tabbox/tabbox.cpp
+@@ -112,6 +112,14 @@ QWeakPointer< TabBoxClient > TabBoxHandlerImpl::firstClientFocusChain() const
+ }
+ }
+
++bool TabBoxHandlerImpl::isInFocusChain(TabBoxClient *client) const
++{
++ if (TabBoxClientImpl *c = static_cast<TabBoxClientImpl*>(client)) {
++ return Workspace::self()->globalFocusChain().contains(c->client());
++ }
++ return false;
++}
++
+ int TabBoxHandlerImpl::nextDesktopFocusChain(int desktop) const
+ {
+ return m_tabBox->nextDesktopFocusChain(desktop);
+diff --git a/kwin/tabbox/tabbox.h b/kwin/tabbox/tabbox.h
+index 6652f93..bba0b39 100644
+--- a/kwin/tabbox/tabbox.h
++++ b/kwin/tabbox/tabbox.h
+@@ -52,6 +52,7 @@ public:
+ virtual QString desktopName(int desktop) const;
+ virtual QWeakPointer< TabBoxClient > nextClientFocusChain(TabBoxClient* client) const;
+ virtual QWeakPointer< TabBoxClient > firstClientFocusChain() const;
++ virtual bool isInFocusChain (TabBoxClient* client) const;
+ virtual int nextDesktopFocusChain(int desktop) const;
+ virtual int numberOfDesktops() const;
+ virtual TabBoxClientList stackingOrder() const;
+diff --git a/kwin/tabbox/tabboxhandler.h b/kwin/tabbox/tabboxhandler.h
+index 7abddfc..d9a6122 100644
+--- a/kwin/tabbox/tabboxhandler.h
++++ b/kwin/tabbox/tabboxhandler.h
+@@ -119,6 +119,7 @@ public:
+ * @since 4.9.1
+ **/
+ virtual QWeakPointer<TabBoxClient> firstClientFocusChain() const = 0;
++ virtual bool isInFocusChain(TabBoxClient* client) const = 0;
+ /**
+ * @param client The client whose desktop name should be retrieved
+ * @return The desktop name of the given TabBoxClient. If the client is