Blame SOURCES/0008-Make-setting-QT_SCALE_FACTOR-work-on-Wayland.patch

429548
From 10005185e06857ce119c50fe710f9eedde06ec5e Mon Sep 17 00:00:00 2001
429548
From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= <morten.sorvig@qt.io>
429548
Date: Fri, 13 Nov 2020 11:21:50 +0100
429548
Subject: [PATCH 08/36] Make setting QT_SCALE_FACTOR work on Wayland
429548
429548
QWindow geometry accessors return geometry in device
429548
independent pixels. Normally this coordinate system
429548
is equivalent to the Wayland native coordinate system,
429548
but this is not the case when QT_SCALE_FACTOR is set.
429548
429548
Replace QWindow geometry calls with the helpers from
429548
QPlatformWindow which return geometry in the native
429548
coordinate system:
429548
429548
QWindow::geometry() -> QPlatformWindow::windowGeometry()
429548
QWindow::frameGeometry() -> QPlatformWindow::windowFrameGeometry()
429548
429548
Task-number: QTBUG-87762
429548
Fixes: QTBUG-88064
429548
(cherry-picked from commit 8cb1b07aea12d50b4fecc45c903705dfd368022a)
429548
Change-Id: I6e2029bc6210f12441ae7c9d8b678271e9922dde
429548
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
429548
---
429548
 src/client/qwaylandwindow.cpp                              | 7 ++++---
429548
 .../shellintegration/wl-shell/qwaylandwlshellsurface.cpp   | 2 +-
429548
 .../shellintegration/xdg-shell-v5/qwaylandxdgsurfacev5.cpp | 2 +-
429548
 .../shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp   | 2 +-
429548
 .../shellintegration/xdg-shell/qwaylandxdgshell.cpp        | 2 +-
429548
 5 files changed, 8 insertions(+), 7 deletions(-)
429548
429548
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
429548
index eb053406..9b343702 100644
429548
--- a/src/client/qwaylandwindow.cpp
429548
+++ b/src/client/qwaylandwindow.cpp
429548
@@ -194,10 +194,11 @@ void QWaylandWindow::initWindow()
429548
     if (QScreen *s = window()->screen())
429548
         setOrientationMask(s->orientationUpdateMask());
429548
     setWindowFlags(window()->flags());
429548
-    if (window()->geometry().isEmpty())
429548
+    QRect geometry = windowGeometry();
429548
+    if (geometry.isEmpty())
429548
         setGeometry_helper(QRect(QPoint(), QSize(500,500)));
429548
     else
429548
-        setGeometry_helper(window()->geometry());
429548
+        setGeometry_helper(geometry);
429548
     setMask(window()->mask());
429548
     if (mShellSurface)
429548
         mShellSurface->requestWindowStates(window()->windowStates());
429548
@@ -431,7 +432,7 @@ void QWaylandWindow::setVisible(bool visible)
429548
         initWindow();
429548
         mDisplay->flushRequests();
429548
 
429548
-        setGeometry(window()->geometry());
429548
+        setGeometry(windowGeometry());
429548
         // Don't flush the events here, or else the newly visible window may start drawing, but since
429548
         // there was no frame before it will be stuck at the waitForFrameSync() in
429548
         // QWaylandShmBackingStore::beginPaint().
429548
diff --git a/src/plugins/shellintegration/wl-shell/qwaylandwlshellsurface.cpp b/src/plugins/shellintegration/wl-shell/qwaylandwlshellsurface.cpp
429548
index 245fec19..8f41118d 100644
429548
--- a/src/plugins/shellintegration/wl-shell/qwaylandwlshellsurface.cpp
429548
+++ b/src/plugins/shellintegration/wl-shell/qwaylandwlshellsurface.cpp
429548
@@ -134,7 +134,7 @@ void QWaylandWlShellSurface::applyConfigure()
429548
 {
429548
     if ((m_pending.states & (Qt::WindowMaximized|Qt::WindowFullScreen))
429548
             && !(m_applied.states & (Qt::WindowMaximized|Qt::WindowFullScreen))) {
429548
-        m_normalSize = m_window->window()->frameGeometry().size();
429548
+        m_normalSize = m_window->windowFrameGeometry().size();
429548
     }
429548
 
429548
     if (m_pending.states != m_applied.states)
429548
diff --git a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgsurfacev5.cpp b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgsurfacev5.cpp
429548
index 770fad7e..73aba1ee 100644
429548
--- a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgsurfacev5.cpp
429548
+++ b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgsurfacev5.cpp
429548
@@ -157,7 +157,7 @@ void QWaylandXdgSurfaceV5::applyConfigure()
429548
     if (m_pending.isResizing)
429548
         m_normalSize = m_pending.size;
429548
     else if (!(m_acked.states & (Qt::WindowMaximized|Qt::WindowFullScreen)))
429548
-        m_normalSize = m_window->window()->frameGeometry().size();
429548
+        m_normalSize = m_window->windowFrameGeometry().size();
429548
 
429548
     if ((m_pending.states & Qt::WindowActive) && !(m_acked.states & Qt::WindowActive))
429548
         m_window->display()->handleWindowActivated(m_window);
429548
diff --git a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp
429548
index c137b308..8c371661 100644
429548
--- a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp
429548
+++ b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp
429548
@@ -72,7 +72,7 @@ QWaylandXdgSurfaceV6::Toplevel::~Toplevel()
429548
 void QWaylandXdgSurfaceV6::Toplevel::applyConfigure()
429548
 {
429548
     if (!(m_applied.states & (Qt::WindowMaximized|Qt::WindowFullScreen)))
429548
-        m_normalSize = m_xdgSurface->m_window->window()->frameGeometry().size();
429548
+        m_normalSize = m_xdgSurface->m_window->windowFrameGeometry().size();
429548
 
429548
     if ((m_pending.states & Qt::WindowActive) && !(m_applied.states & Qt::WindowActive))
429548
         m_xdgSurface->m_window->display()->handleWindowActivated(m_xdgSurface->m_window);
429548
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
429548
index b6d23ac1..1c762944 100644
429548
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
429548
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
429548
@@ -83,7 +83,7 @@ QWaylandXdgSurface::Toplevel::~Toplevel()
429548
 void QWaylandXdgSurface::Toplevel::applyConfigure()
429548
 {
429548
     if (!(m_applied.states & (Qt::WindowMaximized|Qt::WindowFullScreen)))
429548
-        m_normalSize = m_xdgSurface->m_window->window()->frameGeometry().size();
429548
+        m_normalSize = m_xdgSurface->m_window->windowFrameGeometry().size();
429548
 
429548
     if ((m_pending.states & Qt::WindowActive) && !(m_applied.states & Qt::WindowActive))
429548
         m_xdgSurface->m_window->display()->handleWindowActivated(m_xdgSurface->m_window);
429548
-- 
429548
2.33.1
429548