diff options
author | Jan Grulich <jgrulich@redhat.com> | 2021-02-10 17:11:27 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-02-23 10:37:16 +0000 |
commit | 4bf1df36de3ae2074d8279f8fe6df4a7bfddfb66 (patch) | |
tree | e2193b83a8c661b53859eaba30242435651fe515 | |
parent | 906b3de6b8d5791d9923a84167e46aaeca5add56 (diff) | |
download | qtwayland-4bf1df36de3ae2074d8279f8fe6df4a7bfddfb66.tar.gz |
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 <davidedmundson@kde.org>
(cherry picked from commit 3aed1fe7132c00cc7ce9b0fe8fc9e8ccdc771d38)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/client/qwaylandwindow.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp index 435628ad..b19c518d 100644 --- a/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp @@ -1242,12 +1242,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); } |