Summary: | Alt-Tab don't show any windows, when all of them are minimized | ||
---|---|---|---|
Product: | [Plasma] kwin | Reporter: | Ivan Sorokin <vanyacpp> |
Component: | tabbox | Assignee: | KWin default assignee <kwin-bugs-null> |
Status: | RESOLVED DUPLICATE | ||
Severity: | normal | ||
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Ubuntu | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Ivan Sorokin
2011-11-12 20:19:43 UTC
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 *** |