Summary: | OSD doesn't show if Panel visibility is set to "Auto Hide" | ||
---|---|---|---|
Product: | [Plasma] plasmashell | Reporter: | David Brooke <david2012brooke> |
Component: | general | Assignee: | David Edmundson <kde> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | bhush94, cygnix, hotrats2, kde, mgraesslin, plasma-bugs, seelook |
Priority: | NOR | ||
Version: | 5.8.0 | ||
Target Milestone: | 1.0 | ||
Platform: | Gentoo Packages | ||
OS: | Linux | ||
Latest Commit: | http://commits.kde.org/plasma-framework/62b0865492d863cd000814054681ba6a97972cd5 | Version Fixed In: | |
Sentry Crash Report: |
Description
David Brooke
2016-10-10 23:50:57 UTC
I can confirm. It's not just the volume OSD, it's all of them. If I hide both my panels (multi-screen) the OSD stops showing up, if just one panel is shown it works again. I confirm issue and i can give more info. With panel setted to autohide, If you lift the panel the volume osd icon will be displayed while changing the volume via the volume buttons on the keyboard. Sorry for my terrible english Arch Linux Plasma 5.8.0 KF5 5.26.0 Apps 16.18.1 *** Bug 370527 has been marked as a duplicate of this bug. *** *** Bug 370979 has been marked as a duplicate of this bug. *** A first investigation result is that KWin considers the OSD as "minimized", but I don't know yet why KWin thinks it's minimized. KWin hides the window because a parent window is hidden: if (!init_minimize && isTransient() && mainClients().count() > 0 && !workspace()->sessionSaving()) { bool visible_parent = false; // Use allMainClients(), to include also main clients of group transients // that have been optimized out in Client::checkGroupTransients() auto mainclients = allMainClients(); for (auto it = mainclients.constBegin(); it != mainclients.constEnd(); ++it) if ((*it)->isShown(true)) visible_parent = true; if (!visible_parent) { init_minimize = true; demandAttention(); } } xprop on the osd window shows that it has an incorrect transient parent set. Further investigation result shows that both the osd and the panel have the same client leader set. Due to that KWin places them into the same Group. On managing the OSD KWin performs the check shown in comment #6. Which then only finds the panel as a main client and thus we get it minimized. The root problem here is that the OSD has a transient hint, although it's not a transient window! This needs correction in Plasma::Dialog. Git commit 62b0865492d863cd000814054681ba6a97972cd5 by Marco Martin. Committed on 02/11/2016 at 10:56. Pushed by mart into branch 'master'. make sure OSD doesn't have Dialog flag an OSD can't be a Dialog, as qt xcb would attempt to set a transient parent for it, same as panels, which in turn will make for invisible osd on autohide panels Change-Id: I5afea6d4bfa0bfee8b3453e78a1c214a3a0894ec reviewed-by: Martin Graesslin <mgraesslin@kde.org> CCMAIL:distributions@kde.org M +5 -0 src/plasmaquick/dialog.cpp http://commits.kde.org/plasma-framework/62b0865492d863cd000814054681ba6a97972cd5 |