From 755dc98b82a10820ef949272a57bc5278cef7b27 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Wed, 10 Feb 2021 17:11:27 +0100 Subject: Translate opaque area with frame margins The opaque area doesn't take window decorations into account, which may result into possible graphical artefacts. Change-Id: I1606e8256e7e204dad927931eb1221b576e227fd Reviewed-by: David Edmundson (cherry picked from commit 3aed1fe7132c00cc7ce9b0fe8fc9e8ccdc771d38) Reviewed-by: Qt Cherry-pick Bot --- src/client/qwaylandwindow.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/client/qwaylandwindow.cpp') diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp index 00679ec5..fd3cc496 100644 --- a/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp @@ -1234,12 +1234,14 @@ bool QWaylandWindow::isOpaque() const void QWaylandWindow::setOpaqueArea(const QRegion &opaqueArea) { - if (opaqueArea == mOpaqueArea || !mSurface) + const QRegion translatedOpaqueArea = opaqueArea.translated(frameMargins().left(), frameMargins().top()); + + if (translatedOpaqueArea == mOpaqueArea || !mSurface) return; - mOpaqueArea = opaqueArea; + mOpaqueArea = translatedOpaqueArea; - struct ::wl_region *region = mDisplay->createRegion(opaqueArea); + struct ::wl_region *region = mDisplay->createRegion(translatedOpaqueArea); mSurface->set_opaque_region(region); wl_region_destroy(region); } -- cgit v1.2.1