Bug 370433 - OSD doesn't show if Panel visibility is set to "Auto Hide"
Summary: OSD doesn't show if Panel visibility is set to "Auto Hide"
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: general (show other bugs)
Version: 5.8.0
Platform: Gentoo Packages Linux
: NOR normal
Target Milestone: 1.0
Assignee: David Edmundson
URL:
Keywords:
: 370527 370979 (view as bug list)
Depends on:
Blocks:
 
Reported: 2016-10-10 23:50 UTC by David Brooke
Modified: 2016-11-02 10:59 UTC (History)
7 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description David Brooke 2016-10-10 23:50:57 UTC
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
Comment 1 Kai Uwe Broulik 2016-10-11 08:37:09 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.
Comment 2 Hotrats 2016-10-11 15:07:24 UTC
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
Comment 3 Marco Martin 2016-10-18 11:56:32 UTC
*** Bug 370527 has been marked as a duplicate of this bug. ***
Comment 4 Kai Uwe Broulik 2016-10-23 21:47:28 UTC
*** Bug 370979 has been marked as a duplicate of this bug. ***
Comment 5 Martin Flöser 2016-11-01 17:32:41 UTC
A first investigation result is that KWin considers the OSD as "minimized", but I don't know yet why KWin thinks it's minimized.
Comment 6 Martin Flöser 2016-11-02 06:43:06 UTC
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();
        }
    }
Comment 7 Martin Flöser 2016-11-02 06:59:09 UTC
xprop on the osd window shows that it has an incorrect transient parent set.
Comment 8 Martin Flöser 2016-11-02 07:22:14 UTC
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.
Comment 9 Marco Martin 2016-11-02 10:59:48 UTC
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