Always include the window decoration's clipping
No need to only report opacity on the window decoration if the window itself is opaque.
This commit is contained in:
parent
688dc9ac1d
commit
309d6a0d5b
1 changed files with 7 additions and 4 deletions
11
scene.cpp
11
scene.cpp
|
@ -276,14 +276,12 @@ void Scene::paintSimpleScreen(int orig_mask, const QRegion ®ion)
|
|||
|
||||
// Clip out the decoration for opaque windows; the decoration is drawn in the second pass
|
||||
opaqueFullscreen = false; // TODO: do we care about unmanged windows here (maybe input windows?)
|
||||
AbstractClient *client = dynamic_cast<AbstractClient *>(toplevel);
|
||||
if (window->isOpaque()) {
|
||||
AbstractClient *client = dynamic_cast<AbstractClient *>(toplevel);
|
||||
if (client) {
|
||||
opaqueFullscreen = client->isFullScreen();
|
||||
}
|
||||
if (!(client && client->decorationHasAlpha())) {
|
||||
data.clip = window->decorationShape().translated(window->pos());
|
||||
}
|
||||
|
||||
const WindowPixmap *windowPixmap = window->windowPixmap<WindowPixmap>();
|
||||
if (windowPixmap) {
|
||||
data.clip |= windowPixmap->mapToGlobal(windowPixmap->shape());
|
||||
|
@ -302,6 +300,11 @@ void Scene::paintSimpleScreen(int orig_mask, const QRegion ®ion)
|
|||
} else {
|
||||
data.clip = QRegion();
|
||||
}
|
||||
|
||||
if (client && !client->decorationHasAlpha() && toplevel->opacity() == 1.0) {
|
||||
data.clip |= window->decorationShape().translated(window->pos());
|
||||
}
|
||||
|
||||
data.quads = window->buildQuads();
|
||||
// preparation step
|
||||
effects->prePaintWindow(effectWindow(window), data, time_diff);
|
||||
|
|
Loading…
Reference in a new issue