Remove already upstreamed patches

This commit is contained in:
Jan Grulich 2022-11-01 08:31:20 +01:00
parent 18366ff7f8
commit c99693ec30
3 changed files with 0 additions and 119 deletions

View File

@ -1,89 +0,0 @@
From de46b3c6d1bef4b8f64c7db7069c8fd33ef23ed9 Mon Sep 17 00:00:00 2001
From: David Redondo <qt@david-redondo.de>
Date: Wed, 8 Jun 2022 11:25:59 +0200
Subject: [PATCH] Keep toplevel windows in the top left corner of the screen
Cherry-picked from commit a46795a2. Fixes https://bugs.kde.org/show_bug.cgi?id=436016
------------------------------------------------------------------------
We can't know the actual position of a window on the screen. This causes
an issue when Widgets try to position a popup/menu absolutely and keep
it on the screen when the screen geometry doesn't include (0,0).
Instead report their positions always as the top left corner of
the screen that they are on.
This new behavior can be disabled for qt-shell or via an environment
variable by users that rely on the old behavior.
Fixes: QTBUG-85297
Change-Id: Iacb91cb03a0df87af950115760d2f41124ac06a3
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
---
src/client/qwaylandintegration.cpp | 4 ++++
src/client/qwaylandwindow.cpp | 14 +++++++++++++-
src/client/qwaylandwindow_p.h | 3 +++
3 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
index 2bf5fa4..823049c 100644
--- a/src/client/qwaylandintegration.cpp
+++ b/src/client/qwaylandintegration.cpp
@@ -122,6 +122,9 @@ QWaylandIntegration::QWaylandIntegration()
return;
}
+ QWaylandWindow::fixedToplevelPositions =
+ !qEnvironmentVariableIsSet("QT_WAYLAND_DISABLE_FIXED_POSITIONS");
+
// ### Not ideal...
// We don't want to use QPlatformWindow::requestActivate here, since that gives a warning
// for most shells. Also, we don't want to put this into the specific shells that can use
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index 5161604..d57e9ed 100644
--- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp
@@ -364,8 +364,13 @@ void QWaylandWindow::setGeometry_helper(const QRect &rect)
}
}
-void QWaylandWindow::setGeometry(const QRect &rect)
+void QWaylandWindow::setGeometry(const QRect &r)
{
+ auto rect = r;
+ if (fixedToplevelPositions && !QPlatformWindow::parent() && window()->type() != Qt::Popup
+ && window()->type() != Qt::ToolTip) {
+ rect.moveTo(screen()->geometry().topLeft());
+ }
setGeometry_helper(rect);
if (window()->isVisible() && rect.isValid()) {
@@ -1242,6 +1247,13 @@ void QWaylandWindow::handleScreensChanged()
QWindowSystemInterface::handleWindowScreenChanged(window(), newScreen->QPlatformScreen::screen());
mLastReportedScreen = newScreen;
+ if (fixedToplevelPositions && !QPlatformWindow::parent() && window()->type() != Qt::Popup
+ && window()->type() != Qt::ToolTip
+ && geometry().topLeft() != newScreen->geometry().topLeft()) {
+ auto geometry = this->geometry();
+ geometry.moveTo(newScreen->geometry().topLeft());
+ setGeometry(geometry);
+ }
int scale = newScreen->isPlaceholder() ? 1 : static_cast<QWaylandScreen *>(newScreen)->scale();
if (scale != mScale) {
diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h
index 28f780b..53344fc 100644
--- a/src/client/qwaylandwindow_p.h
+++ b/src/client/qwaylandwindow_p.h
@@ -110,6 +110,9 @@ public:
QWaylandWindow(QWindow *window, QWaylandDisplay *display);
~QWaylandWindow() override;
+ // Keep Toplevels position on the top left corner of their screen
+ static inline bool fixedToplevelPositions = true;
+
virtual WindowType windowType() const = 0;
virtual void ensureSize();
WId winId() const override;
--
GitLab

View File

@ -1,28 +0,0 @@
From a4a41fdb2d116f15d7cec4c3fe9d23ef16deb1aa Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Fri, 29 Jul 2022 11:47:02 +0200
Subject: [PATCH] Client: do not take decoration shadows into account when placing popups
The anchor rectangle is relative to the window geometry, which according
to xdg-shell specs shouldn't include invisible portions like shadows.
This causes all popups be wrongly positioned when drop-shadows are used.
Pick-to: 6.4 6.3 6.2
Change-Id: Iac30ab264599f9898f3ddecd7f0c5f2aca824ad6
---
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
index e3dee44..c4b1942 100644
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
@@ -410,8 +410,8 @@
QPoint transientPos = m_window->geometry().topLeft(); // this is absolute
transientPos -= parent->geometry().topLeft();
if (parent->decoration()) {
- transientPos.setX(transientPos.x() + parent->decoration()->margins().left());
- transientPos.setY(transientPos.y() + parent->decoration()->margins().top());
+ transientPos.setX(transientPos.x() + parent->decoration()->margins(QWaylandAbstractDecoration::ShadowsExcluded).left());
+ transientPos.setY(transientPos.y() + parent->decoration()->margins(QWaylandAbstractDecoration::ShadowsExcluded).top());
}
positioner->set_anchor_rect(transientPos.x(), transientPos.y(), 1, 1);
positioner->set_anchor(QtWayland::xdg_positioner::anchor_top_left);

View File

@ -25,8 +25,6 @@ Source0: https://download.qt.io/official_releases/qt/%{majmin}/%{version}/submod
%endif
# Upstream patches
Patch100: 0100-Keep-toplevel-windows-in-the-top-left-corner-of-the-screen.patch
Patch101: 0101-client-do-not-take-decoration-shadows-into-account-when-placing-popups.patch
# Upstreamable patches