The volume osd icon doesn't display when initiated via the volume keys on the keyboard if the panel visibility is set to "Auto Hide". The "popping" sound associated with changing the volume performs as expected and the actual volume change performs as expected. The volume osd icon displays correctly / performs as expected on all other visibility settings: Always Visible, Windows Can Cover and Windows Go Below. Reproducible: Always Steps to Reproduce: 1. Set panel visibility to "Auto Hide" 2. Change the volume via the keyboard volume buttons 3. The volume osd icon will not be displayed but the volume will change accordingly. Actual Results: The volume osd icon will not be displayed but the volume will change accordingly. Also the "popping" sound associated with changing the volume performs as expected. Expected Results: The volume osd icon will be displayed while changing the volume via the volume buttons on the keyboard. The failure result was reproduced on the following: Gentoo stable amd64 Plasma 5.8.0 KF5 5.27 Apps 16.8.1 Neon 5.8 Plasma 5.8.0 KF5 5.27 Apps 16.8.1
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