Bug 404801

Summary: Kickoff becomes invisible after toggling tabbox
Product: [Plasma] kwin Reporter: Vlad Zahorodnii <vlad.zahorodnii>
Component: wayland-genericAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED FIXED    
Severity: normal CC: grasm, nate
Priority: NOR    
Version First Reported In: 5.15.1   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
URL: https://phabricator.kde.org/D19386
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:
Attachments: Demo

Description Vlad Zahorodnii 2019-02-25 13:02:18 UTC
Created attachment 118352 [details]
Demo

SUMMARY
Kickoff becomes invisible after the Breeze task switcher is shown.

STEPS TO REPRODUCE 
1. Toggle tabbox (e.g. press and release alt+tab);
2. Open kickoff, e.g. by pressing Meta key.

SOFTWARE/OS VERSIONS
KDE Plasma Version: 5.15.1
KDE Frameworks Version: 5.56
Qt Version: 5.12.1
Comment 1 Vlad Zahorodnii 2019-02-25 13:20:55 UTC
The bug doesn't occur if there is any window present, e.g. firefox.
Comment 2 Matthieu Gras 2019-02-27 23:55:45 UTC
Rather a limitation than a bug. In X11 setKeepAbove(true) is called on kickoff/kicker during the initialization but in shell-client (wayland) the initialization for keepAbove is basically a no op, which causes kickoff to be assigned to layer 2 (normal window) instead of layer 4 (keep above). Now when you press the combination to switch windows and there are no windows (or you checked the option to always give a "show desktop" option and select that) it will show the desktop which causes plasma-desktop to switch from layer 0 to 4 (the bottom bar will change from layer 3 to layer 5 and remains visible), thus covering kickoff at layer 2.
Comment 3 Vlad Zahorodnii 2019-03-04 22:54:16 UTC
Git commit 297557bde400a24f95e702d92f7d98fcb4070313 by Vlad Zagorodniy.
Committed on 04/03/2019 at 22:54.
Pushed by vladz into branch 'master'.

[wayland] Implement belongsToDesktop check

Summary:
When user asks KWin to show desktop, the compositor just raises every
desktop window, it doesn't attempt to minimize normal clients, etc.
Because desktop windows contain stuff like background and icons, the
compositor has to raise all clients that are somehow correlated with
desktop (e.g. panels, etc). Otherwise it would pretty weird to show only
desktop background.

Currently, not all plasmashell's clients are raised when the compositor
shows desktop because belongsToDesktop is not implemented for ShellClient.

Test Plan:
* Show desktop;
* Open Kickoff (without this patch Kickoff is not visible).

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D19386

M  +16   -15   shell_client.cpp
M  +1    -0    shell_client.h

https://commits.kde.org/kwin/297557bde400a24f95e702d92f7d98fcb4070313