Translate opaque area with frame margins
The opaque area doesn't take window decorations into account, which may result into possible graphical artefacts. Pick-to: 5.15 6.0 6.1 Change-Id: I1606e8256e7e204dad927931eb1221b576e227fd Reviewed-by: David Edmundson <davidedmundson@kde.org>
This commit is contained in:
parent
d56e534dba
commit
9227c5d18d
@ -1242,12 +1242,14 @@ bool QWaylandWindow::isOpaque() const
|
|||||||
|
|
||||||
void QWaylandWindow::setOpaqueArea(const QRegion &opaqueArea)
|
void QWaylandWindow::setOpaqueArea(const QRegion &opaqueArea)
|
||||||
{
|
{
|
||||||
if (opaqueArea == mOpaqueArea || !mSurface)
|
const QRegion translatedOpaqueArea = opaqueArea.translated(frameMargins().left(), frameMargins().top());
|
||||||
|
|
||||||
|
if (translatedOpaqueArea == mOpaqueArea || !mSurface)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
mOpaqueArea = opaqueArea;
|
mOpaqueArea = translatedOpaqueArea;
|
||||||
|
|
||||||
struct ::wl_region *region = mDisplay->createRegion(opaqueArea);
|
struct ::wl_region *region = mDisplay->createRegion(translatedOpaqueArea);
|
||||||
mSurface->set_opaque_region(region);
|
mSurface->set_opaque_region(region);
|
||||||
wl_region_destroy(region);
|
wl_region_destroy(region);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user