Blame SOURCES/qtwayland-translate-opaque-area-for-decorations.patch

89d4c9
From 1e0862acdc2e6ccf77bf3a1436b877d3af5e5fe7 Mon Sep 17 00:00:00 2001
89d4c9
From: Jan Grulich <jgrulich@redhat.com>
89d4c9
Date: Wed, 10 Feb 2021 17:11:27 +0100
89d4c9
Subject: [PATCH] Translate opaque area with frame margins
89d4c9
89d4c9
The opaque area doesn't take window decorations into account, which may
89d4c9
result into possible graphical artefacts.
89d4c9
89d4c9
Pick-to: 5.15
89d4c9
Change-Id: I1606e8256e7e204dad927931eb1221b576e227fd
89d4c9
---
89d4c9
89d4c9
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
89d4c9
index 04c2dbd..b29edfa 100644
89d4c9
--- a/src/client/qwaylandwindow.cpp
89d4c9
+++ b/src/client/qwaylandwindow.cpp
89d4c9
@@ -1242,12 +1242,14 @@
89d4c9
 
89d4c9
 void QWaylandWindow::setOpaqueArea(const QRegion &opaqueArea)
89d4c9
 {
89d4c9
-    if (opaqueArea == mOpaqueArea || !mSurface)
89d4c9
+    const QRegion translatedOpaqueArea = opaqueArea.translated(frameMargins().left(), frameMargins().top());
89d4c9
+
89d4c9
+    if (translatedOpaqueArea == mOpaqueArea || !mSurface)
89d4c9
         return;
89d4c9
 
89d4c9
-    mOpaqueArea = opaqueArea;
89d4c9
+    mOpaqueArea = translatedOpaqueArea;
89d4c9
 
89d4c9
-    struct ::wl_region *region = mDisplay->createRegion(opaqueArea);
89d4c9
+    struct ::wl_region *region = mDisplay->createRegion(translatedOpaqueArea);
89d4c9
     mSurface->set_opaque_region(region);
89d4c9
     wl_region_destroy(region);
89d4c9
 }