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

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