Date: Wednesday, September 5, 2012 @ 14:04:00 Author: andrea Revision: 166195
upgpkg: kdebase-workspace 4.9.1-3 New patch, fix a regression Modified: kdebase-workspace/trunk/PKGBUILD kdebase-workspace/trunk/fix-freeze.patch ------------------+ PKGBUILD | 4 +- fix-freeze.patch | 73 +++++++++++++++++++++++++++++++++++++---------------- 2 files changed, 54 insertions(+), 23 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2012-09-05 14:35:55 UTC (rev 166194) +++ PKGBUILD 2012-09-05 18:04:00 UTC (rev 166195) @@ -5,7 +5,7 @@ pkgname=kdebase-workspace _pkgname=kde-workspace pkgver=4.9.1 -pkgrel=2 +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' @@ -40,7 +40,7 @@ 'd7b5883f7e65c6839b1f65f94d58026673dd0226' 'ac7bc292c865bc1ab8c02e6341aa7aeaf1a3eeee' 'd509dac592bd8b310df27991b208c95b6d907514' - '4cea251edacf60815863fa080cbd3916b44e9890') + '820135367cc577a8557061b9844d3ce4a5fde90f') build() { cd "${srcdir}"/${_pkgname}-${pkgver} Modified: fix-freeze.patch =================================================================== --- fix-freeze.patch 2012-09-05 14:35:55 UTC (rev 166194) +++ fix-freeze.patch 2012-09-05 18:04:00 UTC (rev 166195) @@ -1,25 +1,56 @@ diff --git a/kwin/tabbox/clientmodel.cpp b/kwin/tabbox/clientmodel.cpp -index 9591bab..9790245 100644 +index 9591bab..a67d979 100644 --- a/kwin/tabbox/clientmodel.cpp +++ b/kwin/tabbox/clientmodel.cpp -@@ -195,6 +195,9 @@ void ClientModel::createClientList(int desktop, bool partialReset) - } - } - TabBoxClient* stop = c; -+ // test whether the Client marked as stop will be included at all in the list -+ // see BUG: 306260 -+ bool stopInFocusChain = !tabBox->clientToAddToList(c, desktop).isNull(); - do { - QWeakPointer<TabBoxClient> add = tabBox->clientToAddToList(c, desktop); - if (!add.isNull()) { -@@ -204,6 +207,10 @@ void ClientModel::createClientList(int desktop, bool partialReset) - } - } - c = tabBox->nextClientFocusChain(c).data(); -+ if (!stopInFocusChain) { -+ stop = c; -+ stopInFocusChain = true; -+ } - } while (c && c != stop); - break; +@@ -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