1From 713c94632d62a25d7575ba2ff6225d96e0e7fd3d Mon Sep 17 00:00:00 2001
2From: Alvin Wong <alvin@alvinhc.com>
3Date: Thu, 18 Apr 2019 18:59:58 +0800
4Subject: [PATCH 19/22] Hack to hide 1px border with OpenGL fullscreen hack
5
6Unfortunately can't hide all four sides because the bug returns. Now we
7leave the bottom border visible, which is probably the most we can do.
8
9Ref: https://bugreports.qt.io/browse/QTBUG-41309
10---
11 src/plugins/platforms/windows/qwindowswindow.cpp | 10 +++++++---
12 1 file changed, 7 insertions(+), 3 deletions(-)
13
14diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp
15index 668d82026c..8eed8076f6 100644
16--- a/src/plugins/platforms/windows/qwindowswindow.cpp
17+++ b/src/plugins/platforms/windows/qwindowswindow.cpp
18@@ -1636,7 +1636,7 @@ void QWindowsWindow::show_sys() const
19                 restoreMaximize = true;
20         } else {
21             updateTransientParent();
22-            if (state & Qt::WindowMaximized) {
23+            if (state & Qt::WindowMaximized && !(state & Qt::WindowFullScreen)) {
24                 sm = SW_SHOWMAXIMIZED;
25                 // Windows will not behave correctly when we try to maximize a window which does not
26                 // have minimize nor maximize buttons in the window frame. Windows would then ignore
27@@ -2126,7 +2126,7 @@ bool QWindowsWindow::isFullScreen_sys() const
28         return false;
29     QRect geometry = geometry_sys();
30     if (testFlag(HasBorderInFullScreen))
31-        geometry += QMargins(1, 1, 1, 1);
32+        geometry += QMargins(0, 0, 0, 1);
33     QPlatformScreen *screen = screenForGeometry(geometry);
34     return screen && geometry == screen->geometry();
35 }
36@@ -2197,7 +2197,11 @@ void QWindowsWindow::setWindowState_sys(Qt::WindowStates newState)
37                 const UINT swpf = SWP_FRAMECHANGED | SWP_NOACTIVATE;
38                 const bool wasSync = testFlag(SynchronousGeometryChangeEvent);
39                 setFlag(SynchronousGeometryChangeEvent);
40-                SetWindowPos(m_data.hwnd, HWND_TOP, r.left(), r.top(), r.width(), r.height(), swpf);
41+                if (testFlag(HasBorderInFullScreen)) {
42+                    SetWindowPos(m_data.hwnd, HWND_TOP, r.left() - 1, r.top() - 1, r.width() + 2, r.height() + 1, swpf);
43+                } else {
44+                    SetWindowPos(m_data.hwnd, HWND_TOP, r.left(), r.top(), r.width(), r.height(), swpf);
45+                }
46                 if (!wasSync)
47                     clearFlag(SynchronousGeometryChangeEvent);
48                 clearFlag(MaximizeToFullScreen);
49--
502.20.1.windows.1
51
52