Showing Desktop: keep docks visible
REVIEW: 123783 BUG: 346933 BUG: 347212 CCBUG: 346837 FIXED-IN: 5.3.1
This commit is contained in:
parent
e6176ffc02
commit
f3b69b0ed0
2 changed files with 16 additions and 5 deletions
|
@ -826,11 +826,18 @@ Layer Client::layer() const
|
||||||
|
|
||||||
Layer Client::belongsToLayer() const
|
Layer Client::belongsToLayer() const
|
||||||
{
|
{
|
||||||
|
// NOTICE while showingDesktop, desktops move to the AboveLayer
|
||||||
|
// (interchangeable w/ eg. yakuake etc. which will at first remain visible)
|
||||||
|
// and the docks move into the NotificationLayer (which is between Above- and
|
||||||
|
// ActiveLayer, so that active fullscreen windows will still cover everything)
|
||||||
|
// Since the desktop is also activated, nothing should be in the ActiveLayer, though
|
||||||
if (isDesktop())
|
if (isDesktop())
|
||||||
return workspace()->showingDesktop() ? AboveLayer : DesktopLayer;
|
return workspace()->showingDesktop() ? AboveLayer : DesktopLayer;
|
||||||
if (isSplash()) // no damn annoying splashscreens
|
if (isSplash()) // no damn annoying splashscreens
|
||||||
return NormalLayer; // getting in the way of everything else
|
return NormalLayer; // getting in the way of everything else
|
||||||
if (isDock()) {
|
if (isDock()) {
|
||||||
|
if (workspace()->showingDesktop())
|
||||||
|
return NotificationLayer;
|
||||||
// slight hack for the 'allow window to cover panel' Kicker setting
|
// slight hack for the 'allow window to cover panel' Kicker setting
|
||||||
// don't move keepbelow docks below normal window, but only to the same
|
// don't move keepbelow docks below normal window, but only to the same
|
||||||
// layer, so that both may be raised to cover the other
|
// layer, so that both may be raised to cover the other
|
||||||
|
|
|
@ -1207,13 +1207,17 @@ void Workspace::setShowingDesktop(bool showing)
|
||||||
StackingUpdatesBlocker blocker(this); // updateLayer & lowerClient would invalidate stacking_order
|
StackingUpdatesBlocker blocker(this); // updateLayer & lowerClient would invalidate stacking_order
|
||||||
for (int i = stacking_order.count() - 1; i > -1; --i) {
|
for (int i = stacking_order.count() - 1; i > -1; --i) {
|
||||||
Client *c = qobject_cast<Client*>(stacking_order.at(i));
|
Client *c = qobject_cast<Client*>(stacking_order.at(i));
|
||||||
if (c && c->isOnCurrentDesktop() && c->isDesktop() && c->isShown(true)) {
|
if (c && c->isOnCurrentDesktop()) {
|
||||||
|
if (c->isDock()) {
|
||||||
|
c->updateLayer();
|
||||||
|
} else if (c->isDesktop() && c->isShown(true)) {
|
||||||
c->updateLayer();
|
c->updateLayer();
|
||||||
lowerClient(c);
|
lowerClient(c);
|
||||||
if (!topDesk)
|
if (!topDesk)
|
||||||
topDesk = c;
|
topDesk = c;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} // ~StackingUpdatesBlocker
|
} // ~StackingUpdatesBlocker
|
||||||
|
|
||||||
if (showing_desktop && topDesk)
|
if (showing_desktop && topDesk)
|
||||||
|
|
Loading…
Reference in a new issue