Bug 340594

Summary: tabbox should not initially adjust the focus chain, if the currently active client is not in the focus chain
Product: [Plasma] kwin Reporter: Cade <ahx2323>
Component: tabboxAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED FIXED    
Severity: normal Flags: thomas.luebking: ReviewRequest+
Priority: NOR    
Version: unspecified   
Target Milestone: 5   
Platform: Mint (Ubuntu based)   
OS: Linux   
URL: https://git.reviewboard.kde.org/r/121024/
Latest Commit: Version Fixed In:

Description Cade 2014-11-03 09:09:13 UTC
Create kwin rule with "shortcut" and "skip switcher"; press Alt-Tab.
Order of windows in Alt-Tab list is invalid.

Reproducible: Always

Steps to Reproduce:
Steps to reproduce:

1. create window rule for "konsole":
    "Window class": "konsole konsole";
    "Window types": "Normal window";
    "Skip switcher": "Yes";
    "Shortcut": "Meta+`";
    "Desktop": "all desktops";
2. run "konsole" and (for example) "kwrite", "google-chrome";
3. press Alt+Tab some times to switch to "google-chrome";
    press Alt+Tab to switch to "kwrite";
    now Alt-Tab order is:
    1. "kwrite" (active window);
    2. "google-chrome" (inactive window).
    "konsole" window is inactive;
4. press "Meta + `" to switch to 'konsole";
    now active window is window of "konsole";
5. press Alt+Tab one time.

Actual Results:  
Now active window is window of "google-chrome"
(previously inactive window).
Actual Alt-Tab order is:
1. "google-chrome" (active window);
2. "kwrite" (inactive window).
"konsole" window is inactive.


Expected Results:  
Expected active window is window of "kwrite"
(previously active window).
Expected Alt-Tab order is:
1. "kwrite" (active window);
2. "google-chrome" (inactive window).
"konsole" window is inactive.
Comment 1 Thomas Lübking 2014-11-03 13:37:55 UTC
That's because konsole is not in the focus chain - the present behavior (technically) actually makes sense.

Activating konsole (which is not in the focus chain) does NOT impact the focus chain - kwrite is still on the top of this chain.
With the next tabbox invocation, the focus chain is proceeded, moving chrome on top in this case.

=> the focus chain should not proceed if the currently active client is not in the focus chain
Comment 2 Thomas Lübking 2014-11-27 19:28:01 UTC
Git commit 7747a38189e75659b195150900865b693c04aab1 by Thomas Lübking.
Committed on 06/11/2014 at 21:58.
Pushed by luebking into branch 'master'.

step into the focus chain at the beginning

if the index is 0, we close the circle, but if the
index is -1 (invalid) we're "somewhere" and step
into the focus chain - reasonably at the beginning
REVIEW: 121024

M  +4    -1    focuschain.cpp

http://commits.kde.org/kwin/7747a38189e75659b195150900865b693c04aab1