Version: 4.7 (using KDE 4.7.2) OS: Linux I'm running KDE4 without plasma-desktop. (/usr/share/autostart/plasma-desktop.desktop Hidden=true) When I minimize all my windows, Alt-Tab dialog says that there is no any windows. This didn't happened when I minimize all except one of them. Reproducible: Always Steps to Reproduce: 1. Kill plasma-desktop. 2. Try to Alt-Tab. Everything is ok. 3. Minimize all windows. 4. Try to Alt-Tab again. Actual Results: Dialog says that there is no any windows. Expected Results: I see all my windows and I can switch to them.
I just tried and cannot reproduce on master. I have a few questions: * do you use desktop effects? * what are your settings in the Task Switcher control module?
I've digged into a code and I've found out that this bug only appears when "System Settings->Window Behavior->Task Switcher->Sort Order" is set to "Recently used". When it is "Stacking order" everything is ok. May be there is something with ClientModel::createClientList function? > * do you use desktop effects? In "System Settings->Desktop Effects->General" all checkboxes are off. > * what are your settings in the Task Switcher control module? List windows: Current desktop Sort order: Recently used (with "Stacking order" everything is ok) Include desktop: off Highlight selected window: off (it doesn't affect) Show outline of selected window: off (it doesn't affect) Effect: No Effect Display list while switch: on
still I cannot reproduce when turning compositing off and using recently used
can, 4.7 or git master i think one has to try twice (could reproduce immediately on first attempt, but needed to either alt-tab or manimpulate settings or whatever on second) It's not a visual issue, the list is empty (ie. it's not possible to switch windows) on a wild guess, i'd assume that "TabBoxClient* c = tabBox->nextClientFocusChain(start);" is NULL because there's currently no next client in the chain (they're all minimized)
yes, is. but picking if (!c) // happens when all windows are minimized c = tabBox->stackingOrder().first(); leads to an infinite loop ... :-\
@Martin Okey, the problem is that start is NULL and TabBoxHandlerImpl::nextClientFocusChain() has a typecast check, bypassing the actual Workspace::self()->tabBox()->nextClientFocusChain(c->client()); call Since tabbox has (yet?) no access to Workspace::mostRecentlyActivatedClient() there's no easy catch in ClientModel::createClientList() but i wonder why the cast check is there in the first place since nextClientFocusChain() will return ".last()" if one passes a non existing client.
I'll have a look at it - need to do it anyway as since the introduction of the QML TabBox I stumble upon dangling pointers from time to time (though no reliable way to reproduce)
sorry for the long delay. I set this bug to duplicate of the newer bug which has a patch on review board. Maybe you want to give it a try :-) *** This bug has been marked as a duplicate of bug 305449 ***