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