Bug 306275

Summary: Cannot switch to any window from the Desktop
Product: [Plasma] kwin Reporter: Andrea Scarpino <scarpino>
Component: tabboxAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED FIXED    
Severity: major    
Priority: NOR    
Version: 4.9.1   
Target Milestone: 4.9.2   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In: 4.9.2
Attachments: show desktop settings

Description Andrea Scarpino 2012-09-05 04:45:19 UTC
After upgrading from 4.9.0 to 4.9.1, with these settings (attachment 1 [details]), if I focus on the desktop using Alt+Tab, the next Alt+Tab shows only the Show Desktop entry while I've a couple of windows opened on the screen.

Reproducible: Always

Steps to Reproduce:
1. Check "Include Show Desktop icon" in the Task Switcher settings
2. Open Kwrite
3. Open Konsole
4. Press Alt+Tab and focus to the Desktop
5.  Press Alt+Tab and try to move to KWrite
Actual Results:  
Only the Show Desktop entry is displayed

Expected Results:  
You can navigate between windows

KDE 4.9.1 with KDEBUG#306260 freeze patch
Comment 1 Andrea Scarpino 2012-09-05 04:46:03 UTC
Created attachment 73664 [details]
show desktop settings
Comment 2 Martin Flöser 2012-09-05 15:20:50 UTC
this might be a regression caused by the patch.
Comment 3 Andrea Scarpino 2012-09-05 17:53:08 UTC
The new version of the patch in the bug#306260 fix this.
Comment 4 Martin Flöser 2012-09-05 17:59:39 UTC
the fix is not yet committed - so I better reopen :-)
Comment 5 Martin Flöser 2012-09-05 18:59:25 UTC
Git commit 8452e6c3f01a65953705087e0d7ada87e2cc6997 by Martin Gräßlin.
Committed on 05/09/2012 at 20:55.
Pushed by graesslin into branch 'KDE/4.9'.

Ensure that the start Client to build up the ClientModel is in the Focus Chain

If the start Client is not part of the focus chain the call to
nextClientFocusChain() cannot return the Client again. So the loop break
condition is never reached and as the focus chain is not empty the call
always returns a not null Client which means KWin is caught in an endless
loop.

This change checks that the starting Client is in the focus chain and if
not the first Client of the focus chain is used.
Related: bug 306260
FIXED-IN: 4.9.2

M  +1    -1    kwin/tabbox/clientmodel.cpp
M  +8    -0    kwin/tabbox/tabbox.cpp
M  +1    -0    kwin/tabbox/tabbox.h
M  +14   -0    kwin/tabbox/tabboxhandler.h
M  +17   -0    kwin/tabbox/tests/mock_tabboxhandler.cpp
M  +1    -0    kwin/tabbox/tests/mock_tabboxhandler.h
M  +20   -0    kwin/tabbox/tests/test_tabbox_clientmodel.cpp
M  +7    -0    kwin/tabbox/tests/test_tabbox_clientmodel.h

http://commits.kde.org/kde-workspace/8452e6c3f01a65953705087e0d7ada87e2cc6997