This commit is contained in:
Jan Grulich 2023-04-11 13:34:57 +02:00
parent 2fc9df8fb4
commit e5cf13418b
65 changed files with 654 additions and 622 deletions

1
.gitignore vendored
View File

@ -16,3 +16,4 @@
/qtwayland-everywhere-opensource-src-5.15.6.tar.xz /qtwayland-everywhere-opensource-src-5.15.6.tar.xz
/qtwayland-everywhere-opensource-src-5.15.7.tar.xz /qtwayland-everywhere-opensource-src-5.15.7.tar.xz
/qtwayland-everywhere-opensource-src-5.15.8.tar.xz /qtwayland-everywhere-opensource-src-5.15.8.tar.xz
/qtwayland-everywhere-opensource-src-5.15.9.tar.xz

View File

@ -1,7 +1,7 @@
From 32471d114c621e3e6c89a4b7090543a8ff47c0a8 Mon Sep 17 00:00:00 2001 From 4ddf70b1ed7c5baddef41c549d04917b9dec7d0f Mon Sep 17 00:00:00 2001
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
Date: Wed, 5 May 2021 20:49:26 +0300 Date: Wed, 5 May 2021 20:49:26 +0300
Subject: [PATCH 01/57] Client: Announce an output after receiving more Subject: [PATCH 01/55] Client: Announce an output after receiving more
complete state complete state
Output initialization is not atomic, meaning that the compositor may Output initialization is not atomic, meaning that the compositor may
@ -142,5 +142,5 @@ index df1c94f2..050cfdc0 100644
#if QT_CONFIG(cursor) #if QT_CONFIG(cursor)
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 4ce9dacc726c61aca80fa283decb2b030bf826db Mon Sep 17 00:00:00 2001 From a9bcc5dc553b5a307a5bdcb6e1d92058e0257c7c Mon Sep 17 00:00:00 2001
From: Jaeyoon Jung <jaeyoon.jung@lge.com> From: Jaeyoon Jung <jaeyoon.jung@lge.com>
Date: Mon, 15 Feb 2021 08:31:06 +0900 Date: Mon, 15 Feb 2021 08:31:06 +0900
Subject: [PATCH 02/57] Fix issue with repeated window size changes Subject: [PATCH 02/55] Fix issue with repeated window size changes
Check if the new window size is different from the size requested Check if the new window size is different from the size requested
previously before calling wl_egl_window_resize. It addresses the issue previously before calling wl_egl_window_resize. It addresses the issue
@ -20,10 +20,10 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2 files changed, 4 insertions(+), 1 deletion(-) 2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
index 7889f575..201b583b 100644 index 57d4eb6b..13dd747a 100644
--- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp --- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp +++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
@@ -131,14 +131,16 @@ void QWaylandEglWindow::updateSurface(bool create) @@ -122,14 +122,16 @@ void QWaylandEglWindow::updateSurface(bool create)
if (!disableResizeCheck) { if (!disableResizeCheck) {
wl_egl_window_get_attached_size(m_waylandEglWindow, &current_width, &current_height); wl_egl_window_get_attached_size(m_waylandEglWindow, &current_width, &current_height);
} }
@ -42,10 +42,10 @@ index 7889f575..201b583b 100644
if (!m_eglSurface && m_waylandEglWindow && create) { if (!m_eglSurface && m_waylandEglWindow && create) {
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
index 5b1f4d56..0079dfef 100644 index 6c8f04ec..94c56325 100644
--- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h --- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h +++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
@@ -88,6 +88,7 @@ private: @@ -87,6 +87,7 @@ private:
mutable QOpenGLFramebufferObject *m_contentFBO = nullptr; mutable QOpenGLFramebufferObject *m_contentFBO = nullptr;
QSurfaceFormat m_format; QSurfaceFormat m_format;
@ -54,5 +54,5 @@ index 5b1f4d56..0079dfef 100644
} }
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From b94794e343a6aacb4eaab3890163d9d9f1755c44 Mon Sep 17 00:00:00 2001 From eb8e933841d66f0ebe071a170a9af995c2b07b0d Mon Sep 17 00:00:00 2001
From: David Edmundson <davidedmundson@kde.org> From: David Edmundson <davidedmundson@kde.org>
Date: Tue, 9 Feb 2021 16:09:21 +0000 Date: Tue, 9 Feb 2021 16:09:21 +0000
Subject: [PATCH 03/57] Client: Connect drags being accepted to updating the Subject: [PATCH 03/55] Client: Connect drags being accepted to updating the
source drag icon source drag icon
Currently in a multi-process drag and drop when the other client accepts Currently in a multi-process drag and drop when the other client accepts
@ -35,5 +35,5 @@ index 7e2e3308..bbd2d568 100644
start_drag(m_dragSource->object(), origin->wlSurface(), icon->wlSurface(), m_display->currentInputDevice()->serial()); start_drag(m_dragSource->object(), origin->wlSurface(), icon->wlSurface(), m_display->currentInputDevice()->serial());
return true; return true;
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 53322088f924decda883293a48e165619d309c7f Mon Sep 17 00:00:00 2001 From 9d16197f5e888b68cdf98165f46dcc9ac4dd9820 Mon Sep 17 00:00:00 2001
From: David Edmundson <davidedmundson@kde.org> From: David Edmundson <davidedmundson@kde.org>
Date: Fri, 14 May 2021 13:23:24 +0100 Date: Fri, 14 May 2021 13:23:24 +0100
Subject: [PATCH 04/57] Client: Disconnect registry listener on destruction Subject: [PATCH 04/55] Client: Disconnect registry listener on destruction
If a display outlives a QWaylandClientExtension and a new global is If a display outlives a QWaylandClientExtension and a new global is
announced we end up delivering an event to a now deleted extension which announced we end up delivering an event to a now deleted extension which
@ -45,5 +45,5 @@ index 98272e57..5bd28398 100644
QtWaylandClient::QWaylandIntegration *integration() const; QtWaylandClient::QWaylandIntegration *integration() const;
int version() const; int version() const;
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From be78c471e94c7f0906318fc21a1509d90bb730aa Mon Sep 17 00:00:00 2001 From 8256c6d8bb0f456ad27031bad1cce916c0c29740 Mon Sep 17 00:00:00 2001
From: David Edmundson <davidedmundson@kde.org> From: David Edmundson <davidedmundson@kde.org>
Date: Mon, 3 May 2021 23:01:53 +0100 Date: Mon, 3 May 2021 23:01:53 +0100
Subject: [PATCH 05/57] Client: Set XdgShell size hints before the first commit Subject: [PATCH 05/55] Client: Set XdgShell size hints before the first commit
propagateSizeHints is only called in QWindow we have platform window and propagateSizeHints is only called in QWindow we have platform window and
minimumSizeHint is then sent. We also need to send existing hints when minimumSizeHint is then sent. We also need to send existing hints when
@ -20,7 +20,7 @@ Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
2 files changed, 2 insertions(+), 3 deletions(-) 2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
index f3e3c330..eb317f3a 100644 index f50e1c0e..1f51562b 100644
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp --- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
@@ -105,8 +105,6 @@ void QWaylandXdgSurface::Toplevel::applyConfigure() @@ -105,8 +105,6 @@ void QWaylandXdgSurface::Toplevel::applyConfigure()
@ -54,5 +54,5 @@ index 2277bbb8..2fdd0a7c 100644
QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.minSize, QSize(100, 100)); QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.minSize, QSize(100, 100));
QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.maxSize, QSize(1000, 1000)); QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.maxSize, QSize(1000, 1000));
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From d9479064ef2e669cb79c200ee1db7e4f5e145f1f Mon Sep 17 00:00:00 2001 From bea02a7b4bce8cc3b2a7bce10c53fccc9aedef1e Mon Sep 17 00:00:00 2001
From: David Edmundson <davidedmundson@kde.org> From: David Edmundson <davidedmundson@kde.org>
Date: Mon, 14 Jun 2021 12:45:37 +0100 Date: Mon, 14 Jun 2021 12:45:37 +0100
Subject: [PATCH 06/57] Fix build Subject: [PATCH 06/55] Fix build
1b5e43a593e917610e6245f7a272ac081c508ba4 relied on a patch that we can't 1b5e43a593e917610e6245f7a272ac081c508ba4 relied on a patch that we can't
backport. backport.
@ -42,5 +42,5 @@ index 69cc46a0..9091efbe 100644
class Q_WAYLAND_CLIENT_EXPORT QWaylandClientExtensionTemplatePrivate : public QWaylandClientExtensionPrivate class Q_WAYLAND_CLIENT_EXPORT QWaylandClientExtensionTemplatePrivate : public QWaylandClientExtensionPrivate
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From f1e0f3caca97331b02782c4a367366078ba36b4d Mon Sep 17 00:00:00 2001 From 418580420c34c1a81fd5a4d872e41dc467c124d0 Mon Sep 17 00:00:00 2001
From: Zhang Liang <zhanglianga@uniontech.com> From: Zhang Liang <zhanglianga@uniontech.com>
Date: Mon, 1 Feb 2021 19:29:43 +0800 Date: Mon, 1 Feb 2021 19:29:43 +0800
Subject: [PATCH 07/57] Fix: remove listener Subject: [PATCH 07/55] Fix: remove listener
Add the operation for removing the listener form listener list Add the operation for removing the listener form listener list
@ -13,10 +13,10 @@ Reviewed-by: David Edmundson <davidedmundson@kde.org>
1 file changed, 2 insertions(+), 1 deletion(-) 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
index f10c1f79..e0dfe8b2 100644 index 78e387bc..280e63bd 100644
--- a/src/client/qwaylanddisplay.cpp --- a/src/client/qwaylanddisplay.cpp
+++ b/src/client/qwaylanddisplay.cpp +++ b/src/client/qwaylanddisplay.cpp
@@ -452,9 +452,10 @@ void QWaylandDisplay::addRegistryListener(RegistryListener listener, void *data) @@ -456,9 +456,10 @@ void QWaylandDisplay::addRegistryListener(RegistryListener listener, void *data)
void QWaylandDisplay::removeListener(RegistryListener listener, void *data) void QWaylandDisplay::removeListener(RegistryListener listener, void *data)
{ {
@ -29,5 +29,5 @@ index f10c1f79..e0dfe8b2 100644
uint32_t QWaylandDisplay::currentTimeMillisec() uint32_t QWaylandDisplay::currentTimeMillisec()
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 5fe9ca3aad86b82a2c43b33491605e53227cefad Mon Sep 17 00:00:00 2001 From 0bd8b57955c74fd7cadc3ceb1409c1705208f91e Mon Sep 17 00:00:00 2001
From: David Redondo <qt@david-redondo.de> From: David Redondo <qt@david-redondo.de>
Date: Wed, 26 May 2021 14:49:40 +0200 Date: Wed, 26 May 2021 14:49:40 +0200
Subject: [PATCH 08/57] Hook up queryKeyboardModifers Subject: [PATCH 08/55] Hook up queryKeyboardModifers
Can be useful when upon enter a modifiers event is received but no key Can be useful when upon enter a modifiers event is received but no key
event so no QKeyEvent is generated. event so no QKeyEvent is generated.
@ -19,7 +19,7 @@ Reviewed-by: David Edmundson <davidedmundson@kde.org>
2 files changed, 10 insertions(+) 2 files changed, 10 insertions(+)
diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
index c53ccb78..e5e7dd42 100644 index d257e2e3..cd8569b1 100644
--- a/src/client/qwaylandintegration.cpp --- a/src/client/qwaylandintegration.cpp
+++ b/src/client/qwaylandintegration.cpp +++ b/src/client/qwaylandintegration.cpp
@@ -262,6 +262,14 @@ QWaylandDisplay *QWaylandIntegration::display() const @@ -262,6 +262,14 @@ QWaylandDisplay *QWaylandIntegration::display() const
@ -51,5 +51,5 @@ index ff70ae25..73b80658 100644
QStringList themeNames() const override; QStringList themeNames() const override;
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From c903b6486550f3dbbb8d4dc3ddd81aa60cc505fe Mon Sep 17 00:00:00 2001 From 046a799372b78ab843b26c2312bb563c0d50adcb Mon Sep 17 00:00:00 2001
From: Jan Blackquill <uhhadd@gmail.com> From: Jan Blackquill <uhhadd@gmail.com>
Date: Tue, 24 Aug 2021 14:36:34 -0400 Date: Tue, 24 Aug 2021 14:36:34 -0400
Subject: [PATCH 09/57] Correctly detect if image format is supported by Subject: [PATCH 09/55] Correctly detect if image format is supported by
QImageWriter QImageWriter
The code queries potential image formats by stripping a mimetype of its The code queries potential image formats by stripping a mimetype of its
@ -64,5 +64,5 @@ index a5fdd34d..051a91dc 100644
fmt = imgFmt; fmt = imgFmt;
} }
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From f1c68a200d48545dee0e266a55953e5ddac475f5 Mon Sep 17 00:00:00 2001 From 3bb880d6b828f934f69608af958963c9eedc4e74 Mon Sep 17 00:00:00 2001
From: Georges Basile Stavracas Neto <gbsneto@gnome.org> From: Georges Basile Stavracas Neto <gbsneto@gnome.org>
Date: Thu, 27 May 2021 19:55:04 -0300 Date: Thu, 27 May 2021 19:55:04 -0300
Subject: [PATCH 10/57] Client: Don't always recreate frame callbacks Subject: [PATCH 10/55] Client: Don't always recreate frame callbacks
The main QWaylandWindow method that is executed when handling updates is The main QWaylandWindow method that is executed when handling updates is
QWaylandWindow::handleUpdate(). This method always, unconditionally queues QWaylandWindow::handleUpdate(). This method always, unconditionally queues
@ -38,10 +38,10 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2 files changed, 6 insertions(+) 2 files changed, 6 insertions(+)
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index cb82857a..f13018be 100644 index df2dcdaa..23816895 100644
--- a/src/client/qwaylandwindow.cpp --- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp
@@ -1185,6 +1185,10 @@ void QWaylandWindow::requestUpdate() @@ -1192,6 +1192,10 @@ void QWaylandWindow::requestUpdate()
void QWaylandWindow::handleUpdate() void QWaylandWindow::handleUpdate()
{ {
qCDebug(lcWaylandBackingstore) << "handleUpdate" << QThread::currentThread(); qCDebug(lcWaylandBackingstore) << "handleUpdate" << QThread::currentThread();
@ -73,5 +73,5 @@ index 2fdd0a7c..e2593314 100644
void tst_xdgshell::popup() void tst_xdgshell::popup()
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From a3fcf0c111a96f3dd69ae51366fe7e167d7bac31 Mon Sep 17 00:00:00 2001 From a0ab21120ae0d0976d1c554aa72f00d4b3d35de9 Mon Sep 17 00:00:00 2001
From: Georges Basile Stavracas Neto <gbsneto@gnome.org> From: Georges Basile Stavracas Neto <gbsneto@gnome.org>
Date: Thu, 27 May 2021 20:02:53 -0300 Date: Thu, 27 May 2021 20:02:53 -0300
Subject: [PATCH 11/57] Client: Always destroy frame callback in the actual Subject: [PATCH 11/55] Client: Always destroy frame callback in the actual
callback callback
It's good hygiene to destroy all frame callbacks. Destroy the It's good hygiene to destroy all frame callbacks. Destroy the
@ -23,7 +23,7 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
1 file changed, 5 insertions(+), 6 deletions(-) 1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index f13018be..4544dcec 100644 index 23816895..d3f28d68 100644
--- a/src/client/qwaylandwindow.cpp --- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp
@@ -635,9 +635,13 @@ void QWaylandWindow::commit() @@ -635,9 +635,13 @@ void QWaylandWindow::commit()
@ -41,7 +41,7 @@ index f13018be..4544dcec 100644
window->handleFrameCallback(); window->handleFrameCallback();
} }
}; };
@@ -1194,11 +1198,6 @@ void QWaylandWindow::handleUpdate() @@ -1201,11 +1205,6 @@ void QWaylandWindow::handleUpdate()
if (!mSurface) if (!mSurface)
return; return;
@ -54,5 +54,5 @@ index f13018be..4544dcec 100644
struct ::wl_surface *wrappedSurface = reinterpret_cast<struct ::wl_surface *>(wl_proxy_create_wrapper(mSurface->object())); struct ::wl_surface *wrappedSurface = reinterpret_cast<struct ::wl_surface *>(wl_proxy_create_wrapper(mSurface->object()));
wl_proxy_set_queue(reinterpret_cast<wl_proxy *>(wrappedSurface), mFrameQueue.queue); wl_proxy_set_queue(reinterpret_cast<wl_proxy *>(wrappedSurface), mFrameQueue.queue);
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 2cee3d23545333b16c185c36769e4be05660efe7 Mon Sep 17 00:00:00 2001 From d40acfcc33ae9f8d105f196d1af03a640a02db0b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven.car@enioka.com> From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven.car@enioka.com>
Date: Wed, 18 Aug 2021 18:28:20 +0200 Date: Wed, 18 Aug 2021 18:28:20 +0200
Subject: [PATCH 12/57] Wayland client: use wl_keyboard to determine active Subject: [PATCH 12/55] Wayland client: use wl_keyboard to determine active
state state
Commit f497a5bb87270174b8e0106b7eca1992d44ff15d made QWaylandDisplay Commit f497a5bb87270174b8e0106b7eca1992d44ff15d made QWaylandDisplay
@ -46,10 +46,10 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
13 files changed, 39 insertions(+), 66 deletions(-) 13 files changed, 39 insertions(+), 66 deletions(-)
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
index e0dfe8b2..27303110 100644 index 280e63bd..1568052e 100644
--- a/src/client/qwaylanddisplay.cpp --- a/src/client/qwaylanddisplay.cpp
+++ b/src/client/qwaylanddisplay.cpp +++ b/src/client/qwaylanddisplay.cpp
@@ -575,14 +575,10 @@ void QWaylandDisplay::handleKeyboardFocusChanged(QWaylandInputDevice *inputDevic @@ -579,14 +579,10 @@ void QWaylandDisplay::handleKeyboardFocusChanged(QWaylandInputDevice *inputDevic
if (mLastKeyboardFocus == keyboardFocus) if (mLastKeyboardFocus == keyboardFocus)
return; return;
@ -68,7 +68,7 @@ index e0dfe8b2..27303110 100644
mLastKeyboardFocus = keyboardFocus; mLastKeyboardFocus = keyboardFocus;
} }
@@ -627,6 +623,13 @@ QWaylandInputDevice *QWaylandDisplay::defaultInputDevice() const @@ -631,6 +627,13 @@ QWaylandInputDevice *QWaylandDisplay::defaultInputDevice() const
return mInputDevices.isEmpty() ? 0 : mInputDevices.first(); return mInputDevices.isEmpty() ? 0 : mInputDevices.first();
} }
@ -83,10 +83,10 @@ index e0dfe8b2..27303110 100644
QWaylandCursor *QWaylandDisplay::waylandCursor() QWaylandCursor *QWaylandDisplay::waylandCursor()
diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h
index 3b092bc8..09a1736a 100644 index 1bad8b67..15104d65 100644
--- a/src/client/qwaylanddisplay_p.h --- a/src/client/qwaylanddisplay_p.h
+++ b/src/client/qwaylanddisplay_p.h +++ b/src/client/qwaylanddisplay_p.h
@@ -215,6 +215,7 @@ public: @@ -219,6 +219,7 @@ public:
void destroyFrameQueue(const FrameQueue &q); void destroyFrameQueue(const FrameQueue &q);
void dispatchQueueWhile(wl_event_queue *queue, std::function<bool()> condition, int timeout = -1); void dispatchQueueWhile(wl_event_queue *queue, std::function<bool()> condition, int timeout = -1);
@ -95,7 +95,7 @@ index 3b092bc8..09a1736a 100644
void blockingReadEvents(); void blockingReadEvents();
void flushRequests(); void flushRequests();
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index 4544dcec..0b64b0f4 100644 index d3f28d68..b363c352 100644
--- a/src/client/qwaylandwindow.cpp --- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp
@@ -96,7 +96,6 @@ QWaylandWindow::QWaylandWindow(QWindow *window, QWaylandDisplay *display) @@ -96,7 +96,6 @@ QWaylandWindow::QWaylandWindow(QWindow *window, QWaylandDisplay *display)
@ -115,7 +115,7 @@ index 4544dcec..0b64b0f4 100644
} }
QWaylandWindow *QWaylandWindow::fromWlSurface(::wl_surface *surface) QWaylandWindow *QWaylandWindow::fromWlSurface(::wl_surface *surface)
@@ -1098,10 +1099,18 @@ bool QWaylandWindow::setMouseGrabEnabled(bool grab) @@ -1105,10 +1106,18 @@ bool QWaylandWindow::setMouseGrabEnabled(bool grab)
return true; return true;
} }
@ -234,7 +234,7 @@ index 261f8cbb..c1bcd5c6 100644
private: private:
QScopedPointer<QWaylandXdgShellV6> m_xdgShell; QScopedPointer<QWaylandXdgShellV6> m_xdgShell;
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
index eb317f3a..11706924 100644 index 1f51562b..b7383e19 100644
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp --- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
@@ -67,11 +67,6 @@ QWaylandXdgSurface::Toplevel::Toplevel(QWaylandXdgSurface *xdgSurface) @@ -67,11 +67,6 @@ QWaylandXdgSurface::Toplevel::Toplevel(QWaylandXdgSurface *xdgSurface)
@ -337,5 +337,5 @@ index e2593314..73d1eb9c 100644
const QSize screenSize(640, 480); const QSize screenSize(640, 480);
const uint maximizedSerial = exec([=] { const uint maximizedSerial = exec([=] {
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From b1b87bf639d46605d63e07eecd1135d9e5e4ffac Mon Sep 17 00:00:00 2001 From 23327bb4cdc00b47e0f96efca2fe494540f01601 Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com> From: Jan Grulich <jgrulich@redhat.com>
Date: Fri, 16 Jul 2021 13:00:03 +0200 Date: Fri, 16 Jul 2021 13:00:03 +0200
Subject: [PATCH 13/57] Client: do not empty clipboard when a new popup/window Subject: [PATCH 13/55] Client: do not empty clipboard when a new popup/window
is opened is opened
If we open a new popup or a window within the same app we have to avoid If we open a new popup or a window within the same app we have to avoid
@ -21,10 +21,10 @@ Cherry-pick: 1e57ebd501cfc2255300392cd4565cd034efeed8
2 files changed, 13 insertions(+), 8 deletions(-) 2 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
index 27303110..9f595af3 100644 index 1568052e..aa8808e9 100644
--- a/src/client/qwaylanddisplay.cpp --- a/src/client/qwaylanddisplay.cpp
+++ b/src/client/qwaylanddisplay.cpp +++ b/src/client/qwaylanddisplay.cpp
@@ -597,6 +597,19 @@ void QWaylandDisplay::handleWaylandSync() @@ -601,6 +601,19 @@ void QWaylandDisplay::handleWaylandSync()
QWindow *activeWindow = mActiveWindows.empty() ? nullptr : mActiveWindows.last()->window(); QWindow *activeWindow = mActiveWindows.empty() ? nullptr : mActiveWindows.last()->window();
if (activeWindow != QGuiApplication::focusWindow()) if (activeWindow != QGuiApplication::focusWindow())
QWindowSystemInterface::handleWindowActivated(activeWindow); QWindowSystemInterface::handleWindowActivated(activeWindow);
@ -45,10 +45,10 @@ index 27303110..9f595af3 100644
const wl_callback_listener QWaylandDisplay::syncCallbackListener = { const wl_callback_listener QWaylandDisplay::syncCallbackListener = {
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
index 613fe862..aaec7eb8 100644 index e931d1f5..5d704795 100644
--- a/src/client/qwaylandinputdevice.cpp --- a/src/client/qwaylandinputdevice.cpp
+++ b/src/client/qwaylandinputdevice.cpp +++ b/src/client/qwaylandinputdevice.cpp
@@ -1300,14 +1300,6 @@ void QWaylandInputDevice::Keyboard::handleFocusDestroyed() @@ -1304,14 +1304,6 @@ void QWaylandInputDevice::Keyboard::handleFocusDestroyed()
void QWaylandInputDevice::Keyboard::handleFocusLost() void QWaylandInputDevice::Keyboard::handleFocusLost()
{ {
mFocus = nullptr; mFocus = nullptr;
@ -64,5 +64,5 @@ index 613fe862..aaec7eb8 100644
mRepeatTimer.stop(); mRepeatTimer.stop();
} }
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 3eaa09ead7750e9a484d0f4dc44d60ee48e54cdd Mon Sep 17 00:00:00 2001 From e0e004c77140da5e454dadf4d6809c1603b5735d Mon Sep 17 00:00:00 2001
From: David Edmundson <davidedmundson@kde.org> From: David Edmundson <davidedmundson@kde.org>
Date: Tue, 16 Feb 2021 09:51:47 +0000 Date: Tue, 16 Feb 2021 09:51:47 +0000
Subject: [PATCH 15/57] Client: Implement DataDeviceV3 Subject: [PATCH 14/55] Client: Implement DataDeviceV3
DataDeviceV2 fixes a leak of DataDevice resources. DataDeviceV2 fixes a leak of DataDevice resources.
@ -409,10 +409,10 @@ index 25afff79..96f07bc3 100644
} }
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
index 9f595af3..ea344c61 100644 index aa8808e9..2d298532 100644
--- a/src/client/qwaylanddisplay.cpp --- a/src/client/qwaylanddisplay.cpp
+++ b/src/client/qwaylanddisplay.cpp +++ b/src/client/qwaylanddisplay.cpp
@@ -354,7 +354,7 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin @@ -356,7 +356,7 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin
mInputDevices.append(inputDevice); mInputDevices.append(inputDevice);
#if QT_CONFIG(wayland_datadevice) #if QT_CONFIG(wayland_datadevice)
} else if (interface == QStringLiteral("wl_data_device_manager")) { } else if (interface == QStringLiteral("wl_data_device_manager")) {
@ -509,5 +509,5 @@ index 1568b3b9..067410d0 100644
class DataDeviceCompositor : public DefaultCompositor { class DataDeviceCompositor : public DefaultCompositor {
public: public:
-- --
2.39.0 2.40.0

View File

@ -1,29 +0,0 @@
From 4a7cf632c3d1a5ad66e724b0de85342654ba4760 Mon Sep 17 00:00:00 2001
From: Weng Xuetian <wengxt@gmail.com>
Date: Sat, 18 Dec 2021 23:42:49 -0800
Subject: [PATCH 14/57] Set preedit cursor when cursor equals to 0
Pick-to: 6.3 6.2 5.15
Change-Id: I832fbb22d973b36ac4ab51570fc53bc2e4c3ed58
Reviewed-by: Liang Qi <liang.qi@qt.io>
(cherry picked from commit 719a55be13bdadfa659a732755f280e276a894bd)
---
src/shared/qwaylandinputmethodeventbuilder.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/shared/qwaylandinputmethodeventbuilder.cpp b/src/shared/qwaylandinputmethodeventbuilder.cpp
index 526d0ef4..25be2509 100644
--- a/src/shared/qwaylandinputmethodeventbuilder.cpp
+++ b/src/shared/qwaylandinputmethodeventbuilder.cpp
@@ -151,7 +151,7 @@ QInputMethodEvent QWaylandInputMethodEventBuilder::buildPreedit(const QString &t
{
QList<QInputMethodEvent::Attribute> attributes;
- if (m_preeditCursor < 0) {
+ if (m_preeditCursor <= 0) {
attributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, 0, 0, QVariant()));
} else if (m_preeditCursor > 0) {
attributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, indexFromWayland(text, m_preeditCursor), 1, QVariant()));
--
2.39.0

View File

@ -1,7 +1,7 @@
From 072a3e85068c74cb63fd66bc9dcf7b0b5757a30b Mon Sep 17 00:00:00 2001 From f3900786ebe46aefbecbb2a37cb175846ca0dfc2 Mon Sep 17 00:00:00 2001
From: Arjen Hiemstra <ahiemstra@heimr.nl> From: Arjen Hiemstra <ahiemstra@heimr.nl>
Date: Thu, 18 Nov 2021 13:05:30 +0100 Date: Thu, 18 Nov 2021 13:05:30 +0100
Subject: [PATCH 16/57] Client: Delay deletion of QDrag object until after Subject: [PATCH 15/55] Client: Delay deletion of QDrag object until after
we're done with it we're done with it
In certain cases, most notably when performing drag and drop operations In certain cases, most notably when performing drag and drop operations
@ -63,5 +63,5 @@ index 747f0190..46f629ac 100644
private: private:
QWaylandDisplay *m_display = nullptr; QWaylandDisplay *m_display = nullptr;
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From b61579e7185d4f64ef896ec609428afe81e586e1 Mon Sep 17 00:00:00 2001 From 9edd2a05c79a1c40867440826c830c76136152da Mon Sep 17 00:00:00 2001
From: David Edmundson <davidedmundson@kde.org> From: David Edmundson <davidedmundson@kde.org>
Date: Sun, 14 Nov 2021 13:54:19 +0000 Date: Sun, 14 Nov 2021 13:54:19 +0000
Subject: [PATCH 17/57] Client: Avoid processing of events when showing windows Subject: [PATCH 16/55] Client: Avoid processing of events when showing windows
The only time we want to dispatch events from the wayland socket is when The only time we want to dispatch events from the wayland socket is when
the application is waiting for external events. Doing so at any other the application is waiting for external events. Doing so at any other
@ -22,7 +22,7 @@ Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
1 file changed, 1 deletion(-) 1 file changed, 1 deletion(-)
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index 0b64b0f4..cc425818 100644 index b363c352..b98435ed 100644
--- a/src/client/qwaylandwindow.cpp --- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp
@@ -437,7 +437,6 @@ void QWaylandWindow::setVisible(bool visible) @@ -437,7 +437,6 @@ void QWaylandWindow::setVisible(bool visible)
@ -34,5 +34,5 @@ index 0b64b0f4..cc425818 100644
setGeometry(windowGeometry()); setGeometry(windowGeometry());
// Don't flush the events here, or else the newly visible window may start drawing, but since // Don't flush the events here, or else the newly visible window may start drawing, but since
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From a68649f3a3f04b14238be9f327c5132da1f9fe27 Mon Sep 17 00:00:00 2001 From 5889bb845d951a7877201bca97ffe4bb2491d966 Mon Sep 17 00:00:00 2001
From: Elvis Lee <kwangwoong.lee@lge.com> From: Elvis Lee <kwangwoong.lee@lge.com>
Date: Thu, 18 Feb 2021 15:45:49 +0900 Date: Thu, 18 Feb 2021 15:45:49 +0900
Subject: [PATCH 18/57] Handle registry_global out of constructor Subject: [PATCH 17/55] Handle registry_global out of constructor
Factory functions in QWaylandDisplay::registry_global() can be overridden. Factory functions in QWaylandDisplay::registry_global() can be overridden.
Later, other classes instantiated in the registry_global can support Later, other classes instantiated in the registry_global can support
@ -17,10 +17,10 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
3 files changed, 17 insertions(+), 7 deletions(-) 3 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
index ea344c61..0f75cb7e 100644 index 2d298532..97fb8cbe 100644
--- a/src/client/qwaylanddisplay.cpp --- a/src/client/qwaylanddisplay.cpp
+++ b/src/client/qwaylanddisplay.cpp +++ b/src/client/qwaylanddisplay.cpp
@@ -158,13 +158,6 @@ QWaylandDisplay::QWaylandDisplay(QWaylandIntegration *waylandIntegration) @@ -160,13 +160,6 @@ QWaylandDisplay::QWaylandDisplay(QWaylandIntegration *waylandIntegration)
if (!mXkbContext) if (!mXkbContext)
qCWarning(lcQpaWayland, "failed to create xkb context"); qCWarning(lcQpaWayland, "failed to create xkb context");
#endif #endif
@ -34,7 +34,7 @@ index ea344c61..0f75cb7e 100644
} }
QWaylandDisplay::~QWaylandDisplay(void) QWaylandDisplay::~QWaylandDisplay(void)
@@ -189,6 +182,18 @@ QWaylandDisplay::~QWaylandDisplay(void) @@ -191,6 +184,18 @@ QWaylandDisplay::~QWaylandDisplay(void)
wl_display_disconnect(mDisplay); wl_display_disconnect(mDisplay);
} }
@ -54,10 +54,10 @@ index ea344c61..0f75cb7e 100644
{ {
if (!mScreens.empty() || mPlaceholderScreen) if (!mScreens.empty() || mPlaceholderScreen)
diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h
index 09a1736a..d9c8849f 100644 index 15104d65..49820255 100644
--- a/src/client/qwaylanddisplay_p.h --- a/src/client/qwaylanddisplay_p.h
+++ b/src/client/qwaylanddisplay_p.h +++ b/src/client/qwaylanddisplay_p.h
@@ -129,6 +129,8 @@ public: @@ -131,6 +131,8 @@ public:
QWaylandDisplay(QWaylandIntegration *waylandIntegration); QWaylandDisplay(QWaylandIntegration *waylandIntegration);
~QWaylandDisplay(void) override; ~QWaylandDisplay(void) override;
@ -67,7 +67,7 @@ index 09a1736a..d9c8849f 100644
struct xkb_context *xkbContext() const { return mXkbContext.get(); } struct xkb_context *xkbContext() const { return mXkbContext.get(); }
#endif #endif
diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
index e5e7dd42..f5632982 100644 index cd8569b1..8afecb31 100644
--- a/src/client/qwaylandintegration.cpp --- a/src/client/qwaylandintegration.cpp
+++ b/src/client/qwaylandintegration.cpp +++ b/src/client/qwaylandintegration.cpp
@@ -200,6 +200,9 @@ void QWaylandIntegration::initialize() @@ -200,6 +200,9 @@ void QWaylandIntegration::initialize()
@ -81,5 +81,5 @@ index e5e7dd42..f5632982 100644
mDisplay->ensureScreen(); mDisplay->ensureScreen();
} }
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 848a4c047577d4800a03da2cb98e305702b220ae Mon Sep 17 00:00:00 2001 From 2e03c3b47fa91eb8db5b9a635c2f9dca2b4f5158 Mon Sep 17 00:00:00 2001
From: Elvis Lee <kwangwoong.lee@lge.com> From: Elvis Lee <kwangwoong.lee@lge.com>
Date: Wed, 17 Mar 2021 16:31:10 +0900 Date: Wed, 17 Mar 2021 16:31:10 +0900
Subject: [PATCH 19/57] Connect flushRequest after forceRoundTrip Subject: [PATCH 18/55] Connect flushRequest after forceRoundTrip
If flushRequest is connected with aboutToBlock, the flushRequest If flushRequest is connected with aboutToBlock, the flushRequest
may consumes all events so that processEvents might be blocked in forceRoundTrip. may consumes all events so that processEvents might be blocked in forceRoundTrip.
@ -14,7 +14,7 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
1 file changed, 7 insertions(+), 4 deletions(-) 1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
index f5632982..3a6fa651 100644 index 8afecb31..661cea53 100644
--- a/src/client/qwaylandintegration.cpp --- a/src/client/qwaylandintegration.cpp
+++ b/src/client/qwaylandintegration.cpp +++ b/src/client/qwaylandintegration.cpp
@@ -192,10 +192,6 @@ QAbstractEventDispatcher *QWaylandIntegration::createEventDispatcher() const @@ -192,10 +192,6 @@ QAbstractEventDispatcher *QWaylandIntegration::createEventDispatcher() const
@ -43,5 +43,5 @@ index f5632982..3a6fa651 100644
mDisplay->ensureScreen(); mDisplay->ensureScreen();
} }
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 920bdf21327c447e11a1edb8e75b153800025732 Mon Sep 17 00:00:00 2001 From d89cc9deab3f61cacfad71e8aa32d83d421d49da Mon Sep 17 00:00:00 2001
From: Adrien Faveraux <af@brain-networks.fr> From: Adrien Faveraux <af@brain-networks.fr>
Date: Fri, 26 Nov 2021 09:18:58 +0100 Date: Fri, 26 Nov 2021 09:18:58 +0100
Subject: [PATCH 20/57] Move the wayland socket polling to a separate event Subject: [PATCH 19/55] Move the wayland socket polling to a separate event
thread thread
New event threads is introduced which calls poll() on the wayland fd, New event threads is introduced which calls poll() on the wayland fd,
@ -32,10 +32,10 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
5 files changed, 255 insertions(+), 108 deletions(-) 5 files changed, 255 insertions(+), 108 deletions(-)
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
index 0f75cb7e..a7ce280a 100644 index 97fb8cbe..ebcdbd22 100644
--- a/src/client/qwaylanddisplay.cpp --- a/src/client/qwaylanddisplay.cpp
+++ b/src/client/qwaylanddisplay.cpp +++ b/src/client/qwaylanddisplay.cpp
@@ -85,10 +85,203 @@ @@ -87,10 +87,203 @@
#include <errno.h> #include <errno.h>
@ -239,7 +239,7 @@ index 0f75cb7e..a7ce280a 100644
Q_LOGGING_CATEGORY(lcQpaWayland, "qt.qpa.wayland"); // for general (uncategorized) Wayland platform logging Q_LOGGING_CATEGORY(lcQpaWayland, "qt.qpa.wayland"); // for general (uncategorized) Wayland platform logging
struct wl_surface *QWaylandDisplay::createSurface(void *handle) struct wl_surface *QWaylandDisplay::createSurface(void *handle)
@@ -162,6 +355,12 @@ QWaylandDisplay::QWaylandDisplay(QWaylandIntegration *waylandIntegration) @@ -164,6 +357,12 @@ QWaylandDisplay::QWaylandDisplay(QWaylandIntegration *waylandIntegration)
QWaylandDisplay::~QWaylandDisplay(void) QWaylandDisplay::~QWaylandDisplay(void)
{ {
@ -252,7 +252,7 @@ index 0f75cb7e..a7ce280a 100644
if (mSyncCallback) if (mSyncCallback)
wl_callback_destroy(mSyncCallback); wl_callback_destroy(mSyncCallback);
@@ -208,98 +407,37 @@ void QWaylandDisplay::ensureScreen() @@ -210,98 +409,37 @@ void QWaylandDisplay::ensureScreen()
void QWaylandDisplay::checkError() const void QWaylandDisplay::checkError() const
{ {
@ -371,7 +371,7 @@ index 0f75cb7e..a7ce280a 100644
} }
QWaylandScreen *QWaylandDisplay::screenForOutput(struct wl_output *output) const QWaylandScreen *QWaylandDisplay::screenForOutput(struct wl_output *output) const
@@ -674,4 +812,6 @@ QWaylandCursorTheme *QWaylandDisplay::loadCursorTheme(const QString &name, int p @@ -678,4 +816,6 @@ QWaylandCursorTheme *QWaylandDisplay::loadCursorTheme(const QString &name, int p
} // namespace QtWaylandClient } // namespace QtWaylandClient
@ -379,10 +379,10 @@ index 0f75cb7e..a7ce280a 100644
+ +
QT_END_NAMESPACE QT_END_NAMESPACE
diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h
index d9c8849f..42bc661d 100644 index 49820255..cf91b924 100644
--- a/src/client/qwaylanddisplay_p.h --- a/src/client/qwaylanddisplay_p.h
+++ b/src/client/qwaylanddisplay_p.h +++ b/src/client/qwaylanddisplay_p.h
@@ -109,6 +109,7 @@ class QWaylandSurface; @@ -111,6 +111,7 @@ class QWaylandSurface;
class QWaylandShellIntegration; class QWaylandShellIntegration;
class QWaylandCursor; class QWaylandCursor;
class QWaylandCursorTheme; class QWaylandCursorTheme;
@ -390,7 +390,7 @@ index d9c8849f..42bc661d 100644
typedef void (*RegistryListener)(void *data, typedef void (*RegistryListener)(void *data,
struct wl_registry *registry, struct wl_registry *registry,
@@ -120,12 +121,6 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandDisplay : public QObject, public QtWayland @@ -122,12 +123,6 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandDisplay : public QObject, public QtWayland
Q_OBJECT Q_OBJECT
public: public:
@ -403,7 +403,7 @@ index d9c8849f..42bc661d 100644
QWaylandDisplay(QWaylandIntegration *waylandIntegration); QWaylandDisplay(QWaylandIntegration *waylandIntegration);
~QWaylandDisplay(void) override; ~QWaylandDisplay(void) override;
@@ -212,12 +207,11 @@ public: @@ -216,12 +211,11 @@ public:
void handleKeyboardFocusChanged(QWaylandInputDevice *inputDevice); void handleKeyboardFocusChanged(QWaylandInputDevice *inputDevice);
void handleWindowDestroyed(QWaylandWindow *window); void handleWindowDestroyed(QWaylandWindow *window);
@ -419,7 +419,7 @@ index d9c8849f..42bc661d 100644
public slots: public slots:
void blockingReadEvents(); void blockingReadEvents();
void flushRequests(); void flushRequests();
@@ -240,6 +234,9 @@ private: @@ -244,6 +238,9 @@ private:
}; };
struct wl_display *mDisplay = nullptr; struct wl_display *mDisplay = nullptr;
@ -429,7 +429,7 @@ index d9c8849f..42bc661d 100644
QtWayland::wl_compositor mCompositor; QtWayland::wl_compositor mCompositor;
QScopedPointer<QWaylandShm> mShm; QScopedPointer<QWaylandShm> mShm;
QList<QWaylandScreen *> mWaitingScreens; QList<QWaylandScreen *> mWaitingScreens;
@@ -276,11 +273,9 @@ private: @@ -282,11 +279,9 @@ private:
QWaylandInputDevice *mLastInputDevice = nullptr; QWaylandInputDevice *mLastInputDevice = nullptr;
QPointer<QWaylandWindow> mLastInputWindow; QPointer<QWaylandWindow> mLastInputWindow;
QPointer<QWaylandWindow> mLastKeyboardFocus; QPointer<QWaylandWindow> mLastKeyboardFocus;
@ -443,7 +443,7 @@ index d9c8849f..42bc661d 100644
bool mClientSideInputContextRequested = !QPlatformInputContextFactory::requested().isNull(); bool mClientSideInputContextRequested = !QPlatformInputContextFactory::requested().isNull();
diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
index 3a6fa651..3b876047 100644 index 661cea53..fbf00c6b 100644
--- a/src/client/qwaylandintegration.cpp --- a/src/client/qwaylandintegration.cpp
+++ b/src/client/qwaylandintegration.cpp +++ b/src/client/qwaylandintegration.cpp
@@ -192,9 +192,7 @@ QAbstractEventDispatcher *QWaylandIntegration::createEventDispatcher() const @@ -192,9 +192,7 @@ QAbstractEventDispatcher *QWaylandIntegration::createEventDispatcher() const
@ -458,7 +458,7 @@ index 3a6fa651..3b876047 100644
// Call after eventDispatcher is fully connected, for QWaylandDisplay::forceRoundTrip() // Call after eventDispatcher is fully connected, for QWaylandDisplay::forceRoundTrip()
mDisplay->initialize(); mDisplay->initialize();
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index cc425818..13976320 100644 index b98435ed..292dd023 100644
--- a/src/client/qwaylandwindow.cpp --- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp
@@ -76,7 +76,6 @@ QWaylandWindow *QWaylandWindow::mMouseGrab = nullptr; @@ -76,7 +76,6 @@ QWaylandWindow *QWaylandWindow::mMouseGrab = nullptr;
@ -506,7 +506,7 @@ index cc425818..13976320 100644
if (mWaitingForFrameCallback) { if (mWaitingForFrameCallback) {
qCDebug(lcWaylandBackingstore) << "Didn't receive frame callback in time, window should now be inexposed"; qCDebug(lcWaylandBackingstore) << "Didn't receive frame callback in time, window should now be inexposed";
@@ -1172,8 +1175,11 @@ void QWaylandWindow::requestUpdate() @@ -1179,8 +1182,11 @@ void QWaylandWindow::requestUpdate()
Q_ASSERT(hasPendingUpdateRequest()); // should be set by QPA Q_ASSERT(hasPendingUpdateRequest()); // should be set by QPA
// If we have a frame callback all is good and will be taken care of there // If we have a frame callback all is good and will be taken care of there
@ -520,7 +520,7 @@ index cc425818..13976320 100644
// If we've already called deliverUpdateRequest(), but haven't seen any attach+commit/swap yet // If we've already called deliverUpdateRequest(), but haven't seen any attach+commit/swap yet
// This is a somewhat redundant behavior and might indicate a bug in the calling code, so log // This is a somewhat redundant behavior and might indicate a bug in the calling code, so log
@@ -1186,7 +1192,12 @@ void QWaylandWindow::requestUpdate() @@ -1193,7 +1199,12 @@ void QWaylandWindow::requestUpdate()
// so use invokeMethod to delay the delivery a bit. // so use invokeMethod to delay the delivery a bit.
QMetaObject::invokeMethod(this, [this] { QMetaObject::invokeMethod(this, [this] {
// Things might have changed in the meantime // Things might have changed in the meantime
@ -534,7 +534,7 @@ index cc425818..13976320 100644
deliverUpdateRequest(); deliverUpdateRequest();
}, Qt::QueuedConnection); }, Qt::QueuedConnection);
} }
@@ -1206,9 +1217,10 @@ void QWaylandWindow::handleUpdate() @@ -1213,9 +1224,10 @@ void QWaylandWindow::handleUpdate()
if (!mSurface) if (!mSurface)
return; return;
@ -547,7 +547,7 @@ index cc425818..13976320 100644
mFrameCallback = wl_surface_frame(wrappedSurface); mFrameCallback = wl_surface_frame(wrappedSurface);
wl_proxy_wrapper_destroy(wrappedSurface); wl_proxy_wrapper_destroy(wrappedSurface);
wl_callback_add_listener(mFrameCallback, &QWaylandWindow::callbackListener, this); wl_callback_add_listener(mFrameCallback, &QWaylandWindow::callbackListener, this);
@@ -1218,6 +1230,8 @@ void QWaylandWindow::handleUpdate() @@ -1225,6 +1237,8 @@ void QWaylandWindow::handleUpdate()
// Start a timer for handling the case when the compositor stops sending frame callbacks. // Start a timer for handling the case when the compositor stops sending frame callbacks.
if (mFrameCallbackTimeout > 0) { if (mFrameCallbackTimeout > 0) {
QMetaObject::invokeMethod(this, [this] { QMetaObject::invokeMethod(this, [this] {
@ -570,5 +570,5 @@ index fb3ed606..54ac67a9 100644
// True when we have called deliverRequestUpdate, but the client has not yet attached a new buffer // True when we have called deliverRequestUpdate, but the client has not yet attached a new buffer
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 0aaf113e480900740f8c7e6ebd7acb1ea28cf40e Mon Sep 17 00:00:00 2001 From 58c67c6e8f2d94cef7f8eec072ebad031769e144 Mon Sep 17 00:00:00 2001
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
Date: Tue, 1 Feb 2022 13:05:36 +0200 Date: Tue, 1 Feb 2022 13:05:36 +0200
Subject: [PATCH 22/57] Client: Remove mWaitingForUpdateDelivery Subject: [PATCH 20/55] Client: Remove mWaitingForUpdateDelivery
Currently, mWaitingForUpdateDelivery is shared between the main thread Currently, mWaitingForUpdateDelivery is shared between the main thread
(doHandleFrameCallback()) and the frame callback event thread (doHandleFrameCallback()) and the frame callback event thread
@ -23,7 +23,7 @@ Reviewed-by: David Edmundson <davidedmundson@kde.org>
2 files changed, 12 insertions(+), 18 deletions(-) 2 files changed, 12 insertions(+), 18 deletions(-)
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index 13976320..579a762a 100644 index 292dd023..de5af1bd 100644
--- a/src/client/qwaylandwindow.cpp --- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp
@@ -651,23 +651,18 @@ void QWaylandWindow::handleFrameCallback() @@ -651,23 +651,18 @@ void QWaylandWindow::handleFrameCallback()
@ -75,5 +75,5 @@ index 54ac67a9..cf7ce879 100644
QElapsedTimer mFrameCallbackElapsedTimer; QElapsedTimer mFrameCallbackElapsedTimer;
struct ::wl_callback *mFrameCallback = nullptr; struct ::wl_callback *mFrameCallback = nullptr;
-- --
2.39.0 2.40.0

View File

@ -1,29 +0,0 @@
From 4a1969067ed737c3fa659242cf7e806cd86982e0 Mon Sep 17 00:00:00 2001
From: Joni Poikelin <joni.poikelin@qt.io>
Date: Thu, 3 Feb 2022 14:01:50 +0200
Subject: [PATCH 21/57] Fix crash if no input method module could be loaded
Pick-to: 6.2 6.3 5.15
Change-Id: I8f346def616606a6c5540856bd08a84ee7ed5ca2
Reviewed-by: David Edmundson <davidedmundson@kde.org>
(cherry picked from commit 49fb7248f6ab7de046e2179c7861951ea1169e9b)
---
src/client/qwaylandintegration.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
index 3b876047..fbf00c6b 100644
--- a/src/client/qwaylandintegration.cpp
+++ b/src/client/qwaylandintegration.cpp
@@ -491,7 +491,7 @@ void QWaylandIntegration::reconfigureInputContext()
}
#endif
- qCDebug(lcQpaWayland) << "using input method:" << inputContext()->metaObject()->className();
+ qCDebug(lcQpaWayland) << "using input method:" << (inputContext() ? inputContext()->metaObject()->className() : "<none>");
}
QWaylandShellIntegration *QWaylandIntegration::createShellIntegration(const QString &integrationName)
--
2.39.0

View File

@ -1,7 +1,7 @@
From 7b07d715203182c1f04ad450011a7e3623d1e8e8 Mon Sep 17 00:00:00 2001 From 71a1a9791df20307dd4eb688b0957d0f695823c5 Mon Sep 17 00:00:00 2001
From: David Edmundson <davidedmundson@kde.org> From: David Edmundson <davidedmundson@kde.org>
Date: Wed, 9 Feb 2022 17:20:48 +0000 Date: Wed, 9 Feb 2022 17:20:48 +0000
Subject: [PATCH 25/57] client: Simplify round trip behavior Subject: [PATCH 21/55] client: Simplify round trip behavior
The custom event queue was removed in The custom event queue was removed in
302d4ffb8549214eb4028dc3e47ec4ee4e12ffbd (2015) so the comment about not 302d4ffb8549214eb4028dc3e47ec4ee4e12ffbd (2015) so the comment about not
@ -22,10 +22,10 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
1 file changed, 1 insertion(+), 42 deletions(-) 1 file changed, 1 insertion(+), 42 deletions(-)
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
index a7ce280a..41a44e4b 100644 index ebcdbd22..d371ffec 100644
--- a/src/client/qwaylanddisplay.cpp --- a/src/client/qwaylanddisplay.cpp
+++ b/src/client/qwaylanddisplay.cpp +++ b/src/client/qwaylanddisplay.cpp
@@ -611,50 +611,9 @@ uint32_t QWaylandDisplay::currentTimeMillisec() @@ -615,50 +615,9 @@ uint32_t QWaylandDisplay::currentTimeMillisec()
return 0; return 0;
} }
@ -78,5 +78,5 @@ index a7ce280a..41a44e4b 100644
bool QWaylandDisplay::supportsWindowDecoration() const bool QWaylandDisplay::supportsWindowDecoration() const
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 2c71ea7f92616c799f12a342807688f6854beb4d Mon Sep 17 00:00:00 2001 From f584a8350503e349669744a1587634431ac0dc82 Mon Sep 17 00:00:00 2001
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
Date: Sat, 19 Feb 2022 17:01:04 +0200 Date: Sat, 19 Feb 2022 17:01:04 +0200
Subject: [PATCH 26/57] Client: Fix opaque region setter Subject: [PATCH 22/55] Client: Fix opaque region setter
The rect is in the global coordinate system, while the opaque region The rect is in the global coordinate system, while the opaque region
must be in the surface local coordinate system. must be in the surface local coordinate system.
@ -14,7 +14,7 @@ Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
1 file changed, 1 insertion(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index 579a762a..694e98a4 100644 index de5af1bd..69319228 100644
--- a/src/client/qwaylandwindow.cpp --- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp
@@ -372,7 +372,7 @@ void QWaylandWindow::setGeometry(const QRect &rect) @@ -372,7 +372,7 @@ void QWaylandWindow::setGeometry(const QRect &rect)
@ -27,5 +27,5 @@ index 579a762a..694e98a4 100644
void QWaylandWindow::resizeFromApplyConfigure(const QSize &sizeWithMargins, const QPoint &offset) void QWaylandWindow::resizeFromApplyConfigure(const QSize &sizeWithMargins, const QPoint &offset)
-- --
2.39.0 2.40.0

View File

@ -1,35 +0,0 @@
From b5ee817f9d1597d6cffb82ec2638d2259e6b1a5a Mon Sep 17 00:00:00 2001
From: Weng Xuetian <wengxt@gmail.com>
Date: Tue, 8 Feb 2022 07:11:25 -0800
Subject: [PATCH 23/57] Cursor position == 0 should still show the cursor
Otherwise the cursor would be hidden even if preedit is empty.
Amends 719a55be13bdadfa659a732755f280e276a894bd
Pick-to: 5.15 6.2 6.3
Change-Id: I320733b917779b7b51aa4a28eaea411fdb10a318
Reviewed-by: Liang Qi <liang.qi@qt.io>
(cherry picked from commit 31ae194e295651d9ece03408630d2358acd4f7b4)
---
src/shared/qwaylandinputmethodeventbuilder.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/shared/qwaylandinputmethodeventbuilder.cpp b/src/shared/qwaylandinputmethodeventbuilder.cpp
index 25be2509..458d818e 100644
--- a/src/shared/qwaylandinputmethodeventbuilder.cpp
+++ b/src/shared/qwaylandinputmethodeventbuilder.cpp
@@ -151,9 +151,9 @@ QInputMethodEvent QWaylandInputMethodEventBuilder::buildPreedit(const QString &t
{
QList<QInputMethodEvent::Attribute> attributes;
- if (m_preeditCursor <= 0) {
+ if (m_preeditCursor < 0) {
attributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, 0, 0, QVariant()));
- } else if (m_preeditCursor > 0) {
+ } else {
attributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, indexFromWayland(text, m_preeditCursor), 1, QVariant()));
}
--
2.39.0

View File

@ -1,7 +1,7 @@
From 20af00d0fb9da337d16b6d464ade52de39d39bf0 Mon Sep 17 00:00:00 2001 From a9831916ac5463682b7a27db3ffcadfe0ea07ab9 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de> From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Fri, 4 Feb 2022 11:07:36 +0100 Date: Fri, 4 Feb 2022 11:07:36 +0100
Subject: [PATCH 27/57] Use proper dependencies in compile tests Subject: [PATCH 23/55] Use proper dependencies in compile tests
Use the dependencies as found by the "libraries" section instead of relying Use the dependencies as found by the "libraries" section instead of relying
on them being available in the default location (e.g. "-ldrm"). on them being available in the default location (e.g. "-ldrm").
@ -122,5 +122,5 @@ index bcfd5215..da95d07b 100644
}, },
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 041325c228861093d4325927e4f5e535c9410d1f Mon Sep 17 00:00:00 2001 From c6639e225f45564def8f6729c83887ab73495e59 Mon Sep 17 00:00:00 2001
From: Paul Olav Tvete <paul.tvete@qt.io> From: Paul Olav Tvete <paul.tvete@qt.io>
Date: Tue, 15 Mar 2022 15:59:15 +0100 Date: Tue, 15 Mar 2022 15:59:15 +0100
Subject: [PATCH 29/57] Revert "Client: Remove mWaitingForUpdateDelivery" Subject: [PATCH 24/55] Revert "Client: Remove mWaitingForUpdateDelivery"
The reverted commit introduces a severe performance regression The reverted commit introduces a severe performance regression
when a client window is resized while a QtQuick renderthread when a client window is resized while a QtQuick renderthread
@ -18,7 +18,7 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2 files changed, 10 insertions(+), 3 deletions(-) 2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index 694e98a4..733d5ffa 100644 index 69319228..a87e11aa 100644
--- a/src/client/qwaylandwindow.cpp --- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp
@@ -658,11 +658,17 @@ void QWaylandWindow::handleFrameCallback() @@ -658,11 +658,17 @@ void QWaylandWindow::handleFrameCallback()
@ -55,5 +55,5 @@ index cf7ce879..54ac67a9 100644
QElapsedTimer mFrameCallbackElapsedTimer; QElapsedTimer mFrameCallbackElapsedTimer;
struct ::wl_callback *mFrameCallback = nullptr; struct ::wl_callback *mFrameCallback = nullptr;
-- --
2.39.0 2.40.0

View File

@ -1,88 +0,0 @@
From b7cf29e74784f5138a0182f733fe31960debf7be Mon Sep 17 00:00:00 2001
From: Weng Xuetian <wengxt@gmail.com>
Date: Wed, 22 Dec 2021 10:42:38 -0800
Subject: [PATCH 24/57] Update the preedit styling mapping
- None mapping to no style.
- Default/Underline mapping to underline.
- Highlight/Selection mapping to background color/text color with highlight/highlight
text with underline.
- Active/Inactive mapping to bold text with underline.
- Incorrect mapping to red wave underline.
Pick-to: 5.15 6.2 6.3
Change-Id: Iab51d671b8f83aece8596f7f7610de19343fcceb
Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
(cherry picked from commit f1fb5d9e568a24e213ee41e82a1142cef56f1098)
---
.../qwaylandinputmethodeventbuilder.cpp | 31 ++++++++++++-------
1 file changed, 20 insertions(+), 11 deletions(-)
diff --git a/src/shared/qwaylandinputmethodeventbuilder.cpp b/src/shared/qwaylandinputmethodeventbuilder.cpp
index 458d818e..f50ccf30 100644
--- a/src/shared/qwaylandinputmethodeventbuilder.cpp
+++ b/src/shared/qwaylandinputmethodeventbuilder.cpp
@@ -39,7 +39,10 @@
#include "qwaylandinputmethodeventbuilder_p.h"
+#include <QBrush>
+#include <QGuiApplication>
#include <QInputMethod>
+#include <QPalette>
#include <QTextCharFormat>
#ifdef QT_BUILD_WAYLANDCOMPOSITOR_LIB
@@ -81,32 +84,38 @@ void QWaylandInputMethodEventBuilder::addPreeditStyling(uint32_t index, uint32_t
QTextCharFormat format;
switch (style) {
- case 0:
- case 1:
+ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_NONE:
+ break;
+ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_DEFAULT:
+ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_UNDERLINE:
format.setFontUnderline(true);
format.setUnderlineStyle(QTextCharFormat::SingleUnderline);
m_preeditStyles.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, index, length, format));
break;
- case 2:
- case 3:
+ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_ACTIVE:
+ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_INACTIVE:
format.setFontWeight(QFont::Bold);
format.setFontUnderline(true);
format.setUnderlineStyle(QTextCharFormat::SingleUnderline);
m_preeditStyles.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, index, length, format));
break;
- case 4:
- format.setFontUnderline(true);
- format.setUnderlineStyle(QTextCharFormat::SingleUnderline);
- m_preeditStyles.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, index, length, format));
+ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_HIGHLIGHT:
+ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_SELECTION:
+ {
+ format.setFontUnderline(true);
+ format.setUnderlineStyle(QTextCharFormat::SingleUnderline);
+ QPalette palette = qApp->palette();
+ format.setBackground(QBrush(palette.color(QPalette::Active, QPalette::Highlight)));
+ format.setForeground(QBrush(palette.color(QPalette::Active, QPalette::HighlightedText)));
+ m_preeditStyles.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, index, length, format));
+ }
break;
- case 5:
+ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_INCORRECT:
format.setFontUnderline(true);
format.setUnderlineStyle(QTextCharFormat::WaveUnderline);
format.setUnderlineColor(QColor(Qt::red));
m_preeditStyles.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, index, length, format));
break;
-// case QtWayland::wl_text_input::preedit_style_selection:
-// case QtWayland::wl_text_input::preedit_style_none:
default:
break;
}
--
2.39.0

View File

@ -1,7 +1,7 @@
From 2c108beef333a46caf80db9decff43083aaaa099 Mon Sep 17 00:00:00 2001 From 2c403a8522db9aa6a9f365dba5f8ef5af205295c Mon Sep 17 00:00:00 2001
From: Paul Olav Tvete <paul.tvete@qt.io> From: Paul Olav Tvete <paul.tvete@qt.io>
Date: Tue, 15 Mar 2022 16:53:04 +0100 Date: Tue, 15 Mar 2022 16:53:04 +0100
Subject: [PATCH 30/57] Fix race condition on mWaitingForUpdateDelivery Subject: [PATCH 25/55] Fix race condition on mWaitingForUpdateDelivery
Change-Id: I0e91bda73722468b9339fc434fe04420b5e7d3da Change-Id: I0e91bda73722468b9339fc434fe04420b5e7d3da
Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: David Edmundson <davidedmundson@kde.org>
@ -11,7 +11,7 @@ Reviewed-by: David Edmundson <davidedmundson@kde.org>
2 files changed, 3 insertions(+), 6 deletions(-) 2 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index 733d5ffa..1952c81e 100644 index a87e11aa..264ca59b 100644
--- a/src/client/qwaylandwindow.cpp --- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp
@@ -652,24 +652,21 @@ void QWaylandWindow::handleFrameCallback() @@ -652,24 +652,21 @@ void QWaylandWindow::handleFrameCallback()
@ -55,5 +55,5 @@ index 54ac67a9..c0a76345 100644
QElapsedTimer mFrameCallbackElapsedTimer; QElapsedTimer mFrameCallbackElapsedTimer;
struct ::wl_callback *mFrameCallback = nullptr; struct ::wl_callback *mFrameCallback = nullptr;
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 78ea1a157dde5246b0b53e80d61bb7929aff9616 Mon Sep 17 00:00:00 2001 From 2f0528fc51a378bdd8a3ff93d996765fccf54cce Mon Sep 17 00:00:00 2001
From: Kenneth Topp <ken@bllue.org> From: Kenneth Topp <ken@bllue.org>
Date: Mon, 4 Apr 2022 09:36:21 -0400 Date: Mon, 4 Apr 2022 09:36:21 -0400
Subject: [PATCH 31/57] use poll(2) when reading from clipboard Subject: [PATCH 26/55] use poll(2) when reading from clipboard
change clipboard read away from select(2) call which can fail when change clipboard read away from select(2) call which can fail when
an application has large number of open files an application has large number of open files
@ -44,5 +44,5 @@ index c9e158cc..fe0ea8c9 100644
} else if (ready == 0) { } else if (ready == 0) {
qWarning("QWaylandDataOffer: timeout reading from pipe"); qWarning("QWaylandDataOffer: timeout reading from pipe");
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 55fc0727534575897a866f4b89295dfc38652434 Mon Sep 17 00:00:00 2001 From 2197557879ae1e3459e715dbc20b21e8652cb972 Mon Sep 17 00:00:00 2001
From: Ulf Hermann <ulf.hermann@qt.io> From: Ulf Hermann <ulf.hermann@qt.io>
Date: Tue, 22 Feb 2022 12:31:08 +0100 Date: Tue, 22 Feb 2022 12:31:08 +0100
Subject: [PATCH 32/57] Reduce memory leakage Subject: [PATCH 27/55] Reduce memory leakage
We need to clean up the event queue when we're done. We need to clean up the event queue when we're done.
@ -13,10 +13,10 @@ Reviewed-by: David Edmundson <davidedmundson@kde.org>
1 file changed, 3 insertions(+) 1 file changed, 3 insertions(+)
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
index 41a44e4b..622ffe41 100644 index d371ffec..1b9ec699 100644
--- a/src/client/qwaylanddisplay.cpp --- a/src/client/qwaylanddisplay.cpp
+++ b/src/client/qwaylanddisplay.cpp +++ b/src/client/qwaylanddisplay.cpp
@@ -379,6 +379,9 @@ QWaylandDisplay::~QWaylandDisplay(void) @@ -381,6 +381,9 @@ QWaylandDisplay::~QWaylandDisplay(void)
#endif #endif
if (mDisplay) if (mDisplay)
wl_display_disconnect(mDisplay); wl_display_disconnect(mDisplay);
@ -27,5 +27,5 @@ index 41a44e4b..622ffe41 100644
// Steps which is called just after constructor. This separates registry_global() out of the constructor // Steps which is called just after constructor. This separates registry_global() out of the constructor
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 5b78d5157803414733133ca22490117a1f1a881b Mon Sep 17 00:00:00 2001 From d9b04ba05ed479b577579e6a34d97fb906791f69 Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org> From: Sam James <sam@gentoo.org>
Date: Sat, 18 Jun 2022 17:11:11 +0100 Date: Sat, 18 Jun 2022 17:11:11 +0100
Subject: [PATCH 33/57] Fix build with libcxx (missing array include) Subject: [PATCH 28/55] Fix build with libcxx (missing array include)
Bug: https://bugs.gentoo.org/833488 Bug: https://bugs.gentoo.org/833488
@ -28,5 +28,5 @@ index 56a710c3..c6a8b6c6 100644
#include <EGL/eglext.h> #include <EGL/eglext.h>
-- --
2.39.0 2.40.0

View File

@ -1,50 +0,0 @@
From a947fd6ffe37524e81936c84f264da9c50b009a8 Mon Sep 17 00:00:00 2001
From: Liang Qi <liang.qi@qt.io>
Date: Wed, 9 Mar 2022 10:47:42 +0100
Subject: [PATCH 28/57] client: update button state and etc in pointer_leave()
The cleanup work needs to be done even the surface is null, for
example, a window was closed in mouse press handler, then will not
get a mouse release.
Fixes: QTBUG-100942
Pick-to: 5.15 6.2 6.3
Change-Id: I637a6744909ddbe62bdeba6b21494e5a6ae7fa9f
Reviewed-by: Tang Haixiang <tanghaixiang@uniontech.com>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
(cherry picked from commit 409d1080f25b653b3ff3f57c9776c5c390912206)
---
src/client/qwaylandinputdevice.cpp | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
index aaec7eb8..c3cc4eca 100644
--- a/src/client/qwaylandinputdevice.cpp
+++ b/src/client/qwaylandinputdevice.cpp
@@ -685,6 +685,11 @@ public:
void QWaylandInputDevice::Pointer::pointer_leave(uint32_t time, struct wl_surface *surface)
{
+ invalidateFocus();
+ mButtons = Qt::NoButton;
+
+ mParent->mTime = time;
+
// The event may arrive after destroying the window, indicated by
// a null surface.
if (!surface)
@@ -696,11 +701,6 @@ void QWaylandInputDevice::Pointer::pointer_leave(uint32_t time, struct wl_surfac
if (!QWaylandWindow::mouseGrab())
setFrameEvent(new LeaveEvent(window, mSurfacePos, mGlobalPos));
-
- invalidateFocus();
- mButtons = Qt::NoButton;
-
- mParent->mTime = time;
}
class MotionEvent : public QWaylandPointerEvent
--
2.39.0

View File

@ -1,7 +1,7 @@
From 81ddf70997f62d5f1a02d89048c5ec2d3cd27eaf Mon Sep 17 00:00:00 2001 From 9265dae0d87eaf2a0dfc8a67c46f6c11bd14d2ab Mon Sep 17 00:00:00 2001
From: Weng Xuetian <wengxt@gmail.com> From: Weng Xuetian <wengxt@gmail.com>
Date: Wed, 20 Jul 2022 15:57:40 -0700 Date: Wed, 20 Jul 2022 15:57:40 -0700
Subject: [PATCH 34/57] Only close popup in the the hierchary Subject: [PATCH 29/55] Only close popup in the the hierchary
Imagine following event sequences: Imagine following event sequences:
1. a tooltip is shown. activePopups = {tooltip} 1. a tooltip is shown. activePopups = {tooltip}
@ -31,7 +31,7 @@ Reviewed-by: David Edmundson <davidedmundson@kde.org>
9 files changed, 136 insertions(+), 30 deletions(-) 9 files changed, 136 insertions(+), 30 deletions(-)
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index 1952c81e..6923c9a7 100644 index 264ca59b..9e82c174 100644
--- a/src/client/qwaylandwindow.cpp --- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp
@@ -239,6 +239,7 @@ bool QWaylandWindow::shouldCreateSubSurface() const @@ -239,6 +239,7 @@ bool QWaylandWindow::shouldCreateSubSurface() const
@ -81,7 +81,7 @@ index 1952c81e..6923c9a7 100644
reset(); reset();
} }
} }
@@ -1290,6 +1273,20 @@ void QWaylandWindow::setOpaqueArea(const QRegion &opaqueArea) @@ -1297,6 +1280,20 @@ void QWaylandWindow::setOpaqueArea(const QRegion &opaqueArea)
wl_region_destroy(region); wl_region_destroy(region);
} }
@ -209,7 +209,7 @@ index 8c371661..151c78e3 100644
auto *shell = m_xdgSurface->m_shell; auto *shell = m_xdgSurface->m_shell;
Q_ASSERT(shell->m_topmostGrabbingPopup == this); Q_ASSERT(shell->m_topmostGrabbingPopup == this);
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
index 11706924..25c0e8c3 100644 index b7383e19..962001b3 100644
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp --- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
@@ -195,12 +195,17 @@ QtWayland::xdg_toplevel::resize_edge QWaylandXdgSurface::Toplevel::convertToResi @@ -195,12 +195,17 @@ QtWayland::xdg_toplevel::resize_edge QWaylandXdgSurface::Toplevel::convertToResi
@ -258,10 +258,10 @@ index 11706924..25c0e8c3 100644
auto positioner = new QtWayland::xdg_positioner(m_shell->create_positioner()); auto positioner = new QtWayland::xdg_positioner(m_shell->create_positioner());
// set_popup expects a position relative to the parent // set_popup expects a position relative to the parent
QPoint transientPos = m_window->geometry().topLeft(); // this is absolute QPoint transientPos = m_window->geometry().topLeft(); // this is absolute
@@ -407,8 +414,9 @@ void QWaylandXdgSurface::setPopup(QWaylandWindow *parent) @@ -411,8 +418,9 @@ void QWaylandXdgSurface::setPopup(QWaylandWindow *parent)
positioner->set_anchor(QtWayland::xdg_positioner::anchor_top_left); | QtWayland::xdg_positioner::constraint_adjustment_slide_y
positioner->set_gravity(QtWayland::xdg_positioner::gravity_bottom_right); | QtWayland::xdg_positioner::constraint_adjustment_flip_x
positioner->set_size(m_window->geometry().width(), m_window->geometry().height()); | QtWayland::xdg_positioner::constraint_adjustment_flip_y);
- m_popup = new Popup(this, parentXdgSurface, positioner); - m_popup = new Popup(this, parentXdgSurface, positioner);
+ m_popup = new Popup(this, parent, positioner); + m_popup = new Popup(this, parent, positioner);
positioner->destroy(); positioner->destroy();
@ -397,5 +397,5 @@ index 73d1eb9c..747875b4 100644
void tst_xdgshell::switchPopups() void tst_xdgshell::switchPopups()
{ {
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 2b46297649a4a002a046960e571917660927ed31 Mon Sep 17 00:00:00 2001 From 08ce7a21017e1f9553cd0f4af1316e38709d5553 Mon Sep 17 00:00:00 2001
From: Ville Voutilainen <ville.voutilainen@qt.io> From: Ville Voutilainen <ville.voutilainen@qt.io>
Date: Mon, 18 Jan 2021 12:31:31 +0200 Date: Mon, 18 Jan 2021 12:31:31 +0200
Subject: [PATCH 35/57] Build fixes for GCC 11 Subject: [PATCH 30/55] Build fixes for GCC 11
Task-number: QTBUG-89977 Task-number: QTBUG-89977
Change-Id: I7e3d0964087865e8062f539f851a61f3df017dae Change-Id: I7e3d0964087865e8062f539f851a61f3df017dae
@ -24,5 +24,5 @@ index 5c6c83ba..fa9b7662 100644
namespace MockCompositor { namespace MockCompositor {
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From e043e3770da7ac7dc2e899e4f8f4d23eb8d53161 Mon Sep 17 00:00:00 2001 From ec0171610350305be51c3e4be7c6f086cb360fe6 Mon Sep 17 00:00:00 2001
From: Roman Genkhel <roman.genhel@lge.com> From: Roman Genkhel <roman.genhel@lge.com>
Date: Thu, 12 Nov 2020 12:21:51 +0300 Date: Thu, 12 Nov 2020 12:21:51 +0300
Subject: [PATCH 36/57] Check pointer for null before use in ASSERT Subject: [PATCH 31/55] Check pointer for null before use in ASSERT
Task-number: QTBUG-85195 Task-number: QTBUG-85195
Change-Id: I331e54f6e58aa9d536351a55223610c60b3cb414 Change-Id: I331e54f6e58aa9d536351a55223610c60b3cb414
@ -12,7 +12,7 @@ Reviewed-by: David Edmundson <davidedmundson@kde.org>
1 file changed, 1 insertion(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index 6923c9a7..a4190e16 100644 index 9e82c174..0a5fc15b 100644
--- a/src/client/qwaylandwindow.cpp --- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp
@@ -536,12 +536,12 @@ void QWaylandWindow::sendRecursiveExposeEvent() @@ -536,12 +536,12 @@ void QWaylandWindow::sendRecursiveExposeEvent()
@ -30,5 +30,5 @@ index 6923c9a7..a4190e16 100644
buffer->setBusy(); buffer->setBusy();
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 604594c3d6734bb7c849edf3810d96eb2fbd0869 Mon Sep 17 00:00:00 2001 From 2d3d929c86c5aab6dd30e02ade25697d49617335 Mon Sep 17 00:00:00 2001
From: Paul Olav Tvete <paul.tvete@qt.io> From: Paul Olav Tvete <paul.tvete@qt.io>
Date: Mon, 6 Jul 2020 14:37:35 +0200 Date: Mon, 6 Jul 2020 14:37:35 +0200
Subject: [PATCH 37/57] Use wl_surface.damage_buffer on the client side Subject: [PATCH 32/55] Use wl_surface.damage_buffer on the client side
Prefer the newer, recommended damage_buffer when the compositor Prefer the newer, recommended damage_buffer when the compositor
supports it. supports it.
@ -20,10 +20,10 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
6 files changed, 28 insertions(+), 6 deletions(-) 6 files changed, 28 insertions(+), 6 deletions(-)
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
index 622ffe41..e8613ed8 100644 index 1b9ec699..6898a881 100644
--- a/src/client/qwaylanddisplay.cpp --- a/src/client/qwaylanddisplay.cpp
+++ b/src/client/qwaylanddisplay.cpp +++ b/src/client/qwaylanddisplay.cpp
@@ -491,7 +491,7 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin @@ -493,7 +493,7 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin
if (interface == QStringLiteral("wl_output")) { if (interface == QStringLiteral("wl_output")) {
mWaitingScreens << new QWaylandScreen(this, version, id); mWaitingScreens << new QWaylandScreen(this, version, id);
} else if (interface == QStringLiteral("wl_compositor")) { } else if (interface == QStringLiteral("wl_compositor")) {
@ -33,7 +33,7 @@ index 622ffe41..e8613ed8 100644
} else if (interface == QStringLiteral("wl_shm")) { } else if (interface == QStringLiteral("wl_shm")) {
mShm.reset(new QWaylandShm(this, version, id)); mShm.reset(new QWaylandShm(this, version, id));
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index a4190e16..0967c975 100644 index 0a5fc15b..5b7f9df9 100644
--- a/src/client/qwaylandwindow.cpp --- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp
@@ -563,7 +563,11 @@ void QWaylandWindow::damage(const QRect &rect) @@ -563,7 +563,11 @@ void QWaylandWindow::damage(const QRect &rect)
@ -127,5 +127,5 @@ index 949dc23d..d176837e 100644
uint32_t callback) override; uint32_t callback) override;
void surface_commit(Resource *resource) override; void surface_commit(Resource *resource) override;
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From ef75dcf8ec8ea3996aba46ec1fcf63b34421133c Mon Sep 17 00:00:00 2001 From bdf04e01153aeda2c2bafa059dd21dc377eb82e1 Mon Sep 17 00:00:00 2001
From: David Edmundson <davidedmundson@kde.org> From: David Edmundson <davidedmundson@kde.org>
Date: Fri, 5 Aug 2022 15:00:31 +0100 Date: Fri, 5 Aug 2022 15:00:31 +0100
Subject: [PATCH 38/57] Client: clear focus on touch cancel Subject: [PATCH 33/55] Client: clear focus on touch cancel
When we get a touch_cancel event all touches should be treated as When we get a touch_cancel event all touches should be treated as
lifted. lifted.
@ -23,10 +23,10 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
4 files changed, 39 insertions(+) 4 files changed, 39 insertions(+)
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
index c3cc4eca..4b90de84 100644 index 5d704795..5b880984 100644
--- a/src/client/qwaylandinputdevice.cpp --- a/src/client/qwaylandinputdevice.cpp
+++ b/src/client/qwaylandinputdevice.cpp +++ b/src/client/qwaylandinputdevice.cpp
@@ -1388,6 +1388,7 @@ void QWaylandInputDevice::Touch::touch_cancel() @@ -1392,6 +1392,7 @@ void QWaylandInputDevice::Touch::touch_cancel()
if (touchExt) if (touchExt)
touchExt->touchCanceled(); touchExt->touchCanceled();
@ -112,5 +112,5 @@ index 296dbf47..210d8ddb 100644
Seat *m_seat = nullptr; Seat *m_seat = nullptr;
}; };
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 7bc9e2931cc1c81da23e245eafd42252f9cd6e9f Mon Sep 17 00:00:00 2001 From e920173ee9cef08d10ad8a7e21ae7a5a2c2d7530 Mon Sep 17 00:00:00 2001
From: David Edmundson <davidedmundson@kde.org> From: David Edmundson <davidedmundson@kde.org>
Date: Thu, 3 Feb 2022 19:42:33 +0000 Date: Thu, 3 Feb 2022 19:42:33 +0000
Subject: [PATCH 39/57] Guard mResizeDirty by the correctMutex Subject: [PATCH 34/55] Guard mResizeDirty by the correctMutex
mResizeDirty is used in the GUI thread in setCanResize which can be mResizeDirty is used in the GUI thread in setCanResize which can be
called from the GUI thread. It is queried and set whilst the resizeLock called from the GUI thread. It is queried and set whilst the resizeLock
@ -15,7 +15,7 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
1 file changed, 4 insertions(+), 3 deletions(-) 1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index 0967c975..c6477ec4 100644 index 5b7f9df9..117e3383 100644
--- a/src/client/qwaylandwindow.cpp --- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp
@@ -358,11 +358,12 @@ void QWaylandWindow::setGeometry(const QRect &rect) @@ -358,11 +358,12 @@ void QWaylandWindow::setGeometry(const QRect &rect)
@ -35,5 +35,5 @@ index 0967c975..c6477ec4 100644
} }
QRect exposeGeometry(QPoint(), geometry().size()); QRect exposeGeometry(QPoint(), geometry().size());
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 4939cb0b313727474e340cf31a8037ede91517d3 Mon Sep 17 00:00:00 2001 From 1ff4219d8c58f8356d9d12824948013cdfde6ac5 Mon Sep 17 00:00:00 2001
From: Liang Qi <liang.qi@qt.io> From: Liang Qi <liang.qi@qt.io>
Date: Fri, 11 Mar 2022 09:17:25 +0100 Date: Fri, 11 Mar 2022 09:17:25 +0100
Subject: [PATCH 40/57] client: Synthesize enter/leave event for popup in Subject: [PATCH 35/55] client: Synthesize enter/leave event for popup in
xdg-shell xdg-shell
MIME-Version: 1.0 MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8 Content-Type: text/plain; charset=UTF-8
@ -23,7 +23,7 @@ Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
1 file changed, 27 insertions(+) 1 file changed, 27 insertions(+)
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
index 25c0e8c3..fa6d5808 100644 index 962001b3..ead99989 100644
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp --- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
@@ -221,6 +221,16 @@ QWaylandXdgSurface::Popup::~Popup() @@ -221,6 +221,16 @@ QWaylandXdgSurface::Popup::~Popup()
@ -43,7 +43,7 @@ index 25c0e8c3..fa6d5808 100644
} }
} }
@@ -438,6 +448,23 @@ void QWaylandXdgSurface::setGrabPopup(QWaylandWindow *parent, QWaylandInputDevic @@ -442,6 +452,23 @@ void QWaylandXdgSurface::setGrabPopup(QWaylandWindow *parent, QWaylandInputDevic
} }
setPopup(parent); setPopup(parent);
m_popup->grab(device, serial); m_popup->grab(device, serial);
@ -68,5 +68,5 @@ index 25c0e8c3..fa6d5808 100644
void QWaylandXdgSurface::xdg_surface_configure(uint32_t serial) void QWaylandXdgSurface::xdg_surface_configure(uint32_t serial)
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From c629110d32e33cf0292fcff4b508e5f31cdc51f0 Mon Sep 17 00:00:00 2001 From bf6b509011c4086cc7b1a7cfdc78dd50e446b15f Mon Sep 17 00:00:00 2001
From: Albert Astals Cid <aacid@kde.org> From: Albert Astals Cid <aacid@kde.org>
Date: Fri, 9 Sep 2022 15:37:49 +0200 Date: Fri, 9 Sep 2022 15:37:49 +0200
Subject: [PATCH 41/57] Fix compile tests Subject: [PATCH 36/55] Fix compile tests
Broken in c618467da4c06528537026e2b78f92265bce446f Broken in c618467da4c06528537026e2b78f92265bce446f
--- ---
@ -25,5 +25,5 @@ index b063e0d9..2ea382f1 100644
{ {
auto e = window.m_events.takeFirst(); auto e = window.m_events.takeFirst();
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 8f16be8260f181df34ef69cea784bd92e480e1ad Mon Sep 17 00:00:00 2001 From 137958eec28cb8209069f9a3a3ab778202773ff6 Mon Sep 17 00:00:00 2001
From: Alexandros Frantzis <alexandros.frantzis@collabora.com> From: Alexandros Frantzis <alexandros.frantzis@collabora.com>
Date: Wed, 11 May 2022 17:12:52 +0300 Date: Wed, 11 May 2022 17:12:52 +0300
Subject: [PATCH 42/57] Use CRLF line delimiter for text/uri-list data Subject: [PATCH 37/55] Use CRLF line delimiter for text/uri-list data
According to RFC 2483, which describes text/uri-list, the line delimiter According to RFC 2483, which describes text/uri-list, the line delimiter
must be CRLF (instead of the currently used LF). Some applications must be CRLF (instead of the currently used LF). Some applications
@ -36,5 +36,5 @@ index 051a91dc..e2fe1928 100644
} else { } else {
content = mimeData->data(mimeType); content = mimeData->data(mimeType);
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From a20047ef5387673471af835cd3fba7e23585bc75 Mon Sep 17 00:00:00 2001 From 0064749af275016ae3b4b09964d8d31d756d3468 Mon Sep 17 00:00:00 2001
From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Date: Mon, 8 Aug 2022 12:14:01 +0200 Date: Mon, 8 Aug 2022 12:14:01 +0200
Subject: [PATCH 44/57] Avoid calling requestUpdate from wrong thread Subject: [PATCH 38/55] Avoid calling requestUpdate from wrong thread
In certain circumstances, we can get to createDecoration() In certain circumstances, we can get to createDecoration()
from the render thread (from QWaylandGLContext::makeCurrent) from the render thread (from QWaylandGLContext::makeCurrent)
@ -22,7 +22,7 @@ Reviewed-by: Inho Lee <inho.lee@qt.io>
1 file changed, 5 insertions(+), 1 deletion(-) 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index cb610510..771c96cc 100644 index 117e3383..4ddf9fbe 100644
--- a/src/client/qwaylandwindow.cpp --- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp
@@ -873,7 +873,11 @@ bool QWaylandWindow::createDecoration() @@ -873,7 +873,11 @@ bool QWaylandWindow::createDecoration()
@ -39,5 +39,5 @@ index cb610510..771c96cc 100644
return mWindowDecoration; return mWindowDecoration;
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 38c84c26f3b14d49ef26416049115545e7627514 Mon Sep 17 00:00:00 2001 From 35c03e72007630040659188b2bc7f47b1df82577 Mon Sep 17 00:00:00 2001
From: Fushan Wen <qydwhotmail@gmail.com> From: Fushan Wen <qydwhotmail@gmail.com>
Date: Sun, 18 Sep 2022 18:17:18 +0800 Date: Sun, 18 Sep 2022 18:17:18 +0800
Subject: [PATCH 46/57] Call `finishDrag()` in Subject: [PATCH 39/55] Call `finishDrag()` in
`QWaylandDataDevice::dragSourceCancelled()` `QWaylandDataDevice::dragSourceCancelled()`
Drags can either get finished or cancelled. If a drag is finished Drags can either get finished or cancelled. If a drag is finished
@ -34,5 +34,5 @@ index fbb5aa91..e3e60ed5 100644
} }
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 1ec6327d2e376e76a35cd36cd7d0ed9ddd4294ce Mon Sep 17 00:00:00 2001 From 37ad4aeaa6dce748f5f6bcc5030be187e6320ec0 Mon Sep 17 00:00:00 2001
From: David Edmundson <davidedmundson@kde.org> From: David Edmundson <davidedmundson@kde.org>
Date: Mon, 12 Sep 2022 13:28:08 +0100 Date: Mon, 12 Sep 2022 13:28:08 +0100
Subject: [PATCH 47/57] Hold surface read lock throughout Subject: [PATCH 40/55] Hold surface read lock throughout
QWaylandEglWindow::updateSurface QWaylandEglWindow::updateSurface
QWaylandEGLWindow::updateSurface is called from both the main and render QWaylandEGLWindow::updateSurface is called from both the main and render
@ -50,7 +50,7 @@ index 2be87bc0..ea3d1995 100644
}; };
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
index 201b583b..64140672 100644 index 13dd747a..872a6237 100644
--- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp --- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp +++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
@@ -40,6 +40,7 @@ @@ -40,6 +40,7 @@
@ -61,7 +61,7 @@ index 201b583b..64140672 100644
#include "qwaylandglcontext.h" #include "qwaylandglcontext.h"
#include <QtEglSupport/private/qeglconvenience_p.h> #include <QtEglSupport/private/qeglconvenience_p.h>
@@ -124,6 +125,7 @@ void QWaylandEglWindow::updateSurface(bool create) @@ -115,6 +116,7 @@ void QWaylandEglWindow::updateSurface(bool create)
} }
mOffset = QPoint(); mOffset = QPoint();
} else { } else {
@ -69,7 +69,7 @@ index 201b583b..64140672 100644
if (m_waylandEglWindow) { if (m_waylandEglWindow) {
int current_width, current_height; int current_width, current_height;
static bool disableResizeCheck = qgetenv("QT_WAYLAND_DISABLE_RESIZECHECK").toInt(); static bool disableResizeCheck = qgetenv("QT_WAYLAND_DISABLE_RESIZECHECK").toInt();
@@ -138,8 +140,8 @@ void QWaylandEglWindow::updateSurface(bool create) @@ -129,8 +131,8 @@ void QWaylandEglWindow::updateSurface(bool create)
m_resize = true; m_resize = true;
} }
@ -81,5 +81,5 @@ index 201b583b..64140672 100644
} }
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From b965ae977891221ad6b02d8994352b263e14d2ee Mon Sep 17 00:00:00 2001 From 1012f1d4b5753ad63da3cca1226fb034e297ae6d Mon Sep 17 00:00:00 2001
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
Date: Tue, 8 Nov 2022 16:10:18 +0200 Date: Tue, 8 Nov 2022 16:10:18 +0200
Subject: [PATCH 48/57] Client: Ensure that wl_surface lives as long as qtquick Subject: [PATCH 41/55] Client: Ensure that wl_surface lives as long as qtquick
render thread needs it render thread needs it
wl_surface can be destroyed while qtquick render thread still uses it. wl_surface can be destroyed while qtquick render thread still uses it.
@ -18,7 +18,7 @@ Change-Id: I044f40dd64e6672027a833379b57ccd9973d8305
3 files changed, 20 insertions(+), 2 deletions(-) 3 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index 771c96cc..5b97cd55 100644 index 4ddf9fbe..1f2d56b5 100644
--- a/src/client/qwaylandwindow.cpp --- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp
@@ -76,6 +76,7 @@ QWaylandWindow *QWaylandWindow::mMouseGrab = nullptr; @@ -76,6 +76,7 @@ QWaylandWindow *QWaylandWindow::mMouseGrab = nullptr;
@ -105,5 +105,5 @@ index c1f45fa6..5d6fb2bf 100644
GLuint QWaylandGLContext::defaultFramebufferObject(QPlatformSurface *surface) const GLuint QWaylandGLContext::defaultFramebufferObject(QPlatformSurface *surface) const
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 9146c96b84392df39d2962c3b8bcf25bbcf93ff5 Mon Sep 17 00:00:00 2001 From 61fccee064cd8cea698a530c76113f8487d11d68 Mon Sep 17 00:00:00 2001
From: David Redondo <qt@david-redondo.de> From: David Redondo <qt@david-redondo.de>
Date: Wed, 8 Jun 2022 11:25:59 +0200 Date: Wed, 8 Jun 2022 11:25:59 +0200
Subject: [PATCH 49/57] Keep toplevel windows in the top left corner of the Subject: [PATCH 42/55] Keep toplevel windows in the top left corner of the
screen screen
We can't know the actual position of a window on the screen. This causes We can't know the actual position of a window on the screen. This causes
@ -39,7 +39,7 @@ index fbf00c6b..54861600 100644
QWaylandIntegration::~QWaylandIntegration() QWaylandIntegration::~QWaylandIntegration()
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index 5b97cd55..01cbbf39 100644 index 1f2d56b5..d3459168 100644
--- a/src/client/qwaylandwindow.cpp --- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp
@@ -361,8 +361,13 @@ void QWaylandWindow::setGeometry_helper(const QRect &rect) @@ -361,8 +361,13 @@ void QWaylandWindow::setGeometry_helper(const QRect &rect)
@ -86,5 +86,5 @@ index e18609d9..a8ee2696 100644
virtual void ensureSize(); virtual void ensureSize();
WId winId() const override; WId winId() const override;
-- --
2.39.0 2.40.0

View File

@ -1,65 +0,0 @@
From 2d37a9d3700578154275661a51ccf1b895f05260 Mon Sep 17 00:00:00 2001
From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Date: Tue, 9 Nov 2021 13:23:41 +0100
Subject: [PATCH 43/57] Fix missing update when toggling client-side
decorations
When CSD is toggled while a window is showing, it would change the
size and recreate the buffers, but since the widget area remained
the same size, we would not trigger a redraw. The result was that
when you got any update to the window, it would redraw the widgets
that had changed, and the rest would be transparent.
Since this is a fairly specialized case, we fix it the simple way,
by just issuing an extra update when it happens.
This also required an update to the surface test, since there is
an additional buffer commit in the beginning of the sequence now.
Pick-to: 5.15 6.2 6.3
Fixes: QTBUG-95032
Change-Id: Ic4bdb9c66a2ea76546926dd622f2d2dac5dce10c
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Liang Qi <liang.qi@qt.io>
(cherry picked from commit af7b60ade5c4be81cbc58eb18307c017d5594071)
---
src/client/qwaylandwindow.cpp | 7 +++++++
tests/auto/client/surface/tst_surface.cpp | 4 ++++
2 files changed, 11 insertions(+)
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index c6477ec4..cb610510 100644
--- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp
@@ -867,6 +867,13 @@ bool QWaylandWindow::createDecoration()
subsurf->set_position(pos.x() + m.left(), pos.y() + m.top());
}
sendExposeEvent(QRect(QPoint(), geometry().size()));
+
+ // This is a special case where the buffer is recreated, but since
+ // the content rect remains the same, the widgets remain the same
+ // size and are not redrawn, leaving the new buffer empty. As a simple
+ // work-around, we trigger a full extra update whenever the client-side
+ // window decorations are toggled while the window is showing.
+ window()->requestUpdate();
}
return mWindowDecoration;
diff --git a/tests/auto/client/surface/tst_surface.cpp b/tests/auto/client/surface/tst_surface.cpp
index 95e4e609..60c672ce 100644
--- a/tests/auto/client/surface/tst_surface.cpp
+++ b/tests/auto/client/surface/tst_surface.cpp
@@ -129,6 +129,10 @@ void tst_surface::waitForFrameCallbackGl()
// Make sure we follow frame callbacks for some frames
for (int i = 0; i < 5; ++i) {
xdgPingAndWaitForPong(); // Make sure things have happened on the client
+ if (!qEnvironmentVariableIntValue("QT_WAYLAND_DISABLE_WINDOWDECORATION") && i == 0) {
+ QCOMPARE(bufferSpy.count(), 1);
+ bufferSpy.removeFirst();
+ }
exec([&] {
QVERIFY(bufferSpy.empty()); // Make sure no extra buffers have arrived
QVERIFY(!xdgToplevel()->surface()->m_waitingFrameCallbacks.empty());
--
2.39.0

View File

@ -1,7 +1,7 @@
From 7f04725f5121bc0b05ad2289a1fef362aaa48b2f Mon Sep 17 00:00:00 2001 From 3813da4b6d88320b42a7d91ae100e1567113ee72 Mon Sep 17 00:00:00 2001
From: David Edmundson <kde@davidedmundson.co.uk> From: David Edmundson <kde@davidedmundson.co.uk>
Date: Mon, 14 Nov 2022 10:43:25 +0000 Date: Mon, 14 Nov 2022 10:43:25 +0000
Subject: [PATCH 50/57] Revert "Client: Ensure that wl_surface lives as long as Subject: [PATCH 43/55] Revert "Client: Ensure that wl_surface lives as long as
qtquick render thread needs it" qtquick render thread needs it"
This reverts commit 81a7702a87f386a60a0ac8c902e203daae044d81 This reverts commit 81a7702a87f386a60a0ac8c902e203daae044d81
@ -12,7 +12,7 @@ This reverts commit 81a7702a87f386a60a0ac8c902e203daae044d81
3 files changed, 2 insertions(+), 20 deletions(-) 3 files changed, 2 insertions(+), 20 deletions(-)
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index 01cbbf39..d4083121 100644 index d3459168..f322a8d6 100644
--- a/src/client/qwaylandwindow.cpp --- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp
@@ -76,7 +76,6 @@ QWaylandWindow *QWaylandWindow::mMouseGrab = nullptr; @@ -76,7 +76,6 @@ QWaylandWindow *QWaylandWindow::mMouseGrab = nullptr;
@ -99,5 +99,5 @@ index 5d6fb2bf..c1f45fa6 100644
GLuint QWaylandGLContext::defaultFramebufferObject(QPlatformSurface *surface) const GLuint QWaylandGLContext::defaultFramebufferObject(QPlatformSurface *surface) const
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From ee6465749449f83f4d0028ff7988ca0c77b3506d Mon Sep 17 00:00:00 2001 From dd605d5fec6921a7befbfe2c40c2ae87935aa9c4 Mon Sep 17 00:00:00 2001
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
Date: Thu, 17 Nov 2022 15:25:37 +0200 Date: Thu, 17 Nov 2022 15:25:37 +0200
Subject: [PATCH 51/57] Client: Add F_SEAL_SHRINK seal to shm backing file Subject: [PATCH 44/55] Client: Add F_SEAL_SHRINK seal to shm backing file
This lets libwayland-server avoid installing a SIGBUS handler when it This lets libwayland-server avoid installing a SIGBUS handler when it
wants to mmap() the backing file and access the contents of shared wants to mmap() the backing file and access the contents of shared
@ -49,5 +49,5 @@ index dc7ff670..98acd42d 100644
QScopedPointer<QFile> filePointer; QScopedPointer<QFile> filePointer;
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 4c56a6d18da10b42a5e01d31b3d636cfd551a767 Mon Sep 17 00:00:00 2001 From dea12f0bb5729de6c1a31b03b7e79710baf96b63 Mon Sep 17 00:00:00 2001
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
Date: Mon, 21 Nov 2022 18:39:40 +0200 Date: Mon, 21 Nov 2022 18:39:40 +0200
Subject: [PATCH 52/57] Client: Call wl_output_release() upon QWaylandScreen Subject: [PATCH 45/55] Client: Call wl_output_release() upon QWaylandScreen
destruction destruction
It ensures that the proxy gets destroyed. It ensures that the proxy gets destroyed.
@ -27,5 +27,5 @@ index 7c2d9be3..64ae4fe7 100644
uint QWaylandScreen::requiredEvents() const uint QWaylandScreen::requiredEvents() const
-- --
2.39.0 2.40.0

View File

@ -1,42 +0,0 @@
From 1c4a808a3e81aa498da00b88d1ada8b40465d0f8 Mon Sep 17 00:00:00 2001
From: Liang Qi <liang.qi@qt.io>
Date: Mon, 13 Dec 2021 13:01:59 +0100
Subject: [PATCH 45/57] Client: support high-dpi mode for window icon
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fixes: QTBUG-90530
Pick-to: 6.3 6.2 5.15
Change-Id: Ib1f36e1cb89352dfac8a385a7b097cfc0226e813
Reviewed-by: David Edmundson <davidedmundson@kde.org>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
(cherry picked from commit fc91cd6b1306c6d452cbddab3c2289ccb92218d6)
---
src/plugins/decorations/bradient/main.cpp | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/src/plugins/decorations/bradient/main.cpp b/src/plugins/decorations/bradient/main.cpp
index e75fda3c..fa885143 100644
--- a/src/plugins/decorations/bradient/main.cpp
+++ b/src/plugins/decorations/bradient/main.cpp
@@ -164,13 +164,10 @@ void QWaylandBradientDecoration::paint(QPaintDevice *device)
// Window icon
QIcon icon = waylandWindow()->windowIcon();
if (!icon.isNull()) {
- QPixmap pixmap = icon.pixmap(QSize(128, 128));
- QPixmap scaled = pixmap.scaled(22, 22, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
-
QRectF iconRect(0, 0, 22, 22);
- p.drawPixmap(iconRect.adjusted(margins().left() + BUTTON_SPACING, 4,
- margins().left() + BUTTON_SPACING, 4),
- scaled, iconRect);
+ iconRect.adjust(margins().left() + BUTTON_SPACING, 4,
+ margins().left() + BUTTON_SPACING, 4),
+ icon.paint(&p, iconRect.toRect());
}
// Window title
--
2.39.0

View File

@ -1,7 +1,7 @@
From 66110372de281b85acff08acd68d127163c7d83e Mon Sep 17 00:00:00 2001 From 8071f24324ffa8c556068816e009a5887e1a6ddd Mon Sep 17 00:00:00 2001
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
Date: Tue, 22 Nov 2022 12:33:41 +0200 Date: Tue, 22 Nov 2022 12:33:41 +0200
Subject: [PATCH 53/57] Client: Bump wl_output version Subject: [PATCH 46/55] Client: Bump wl_output version
wl_output_release is available starting with wl_output v3. wl_output_release is available starting with wl_output v3.
@ -26,5 +26,5 @@ index 64ae4fe7..5537dafd 100644
, mWaylandDisplay(waylandDisplay) , mWaylandDisplay(waylandDisplay)
, mOutputName(QStringLiteral("Screen%1").arg(id)) , mOutputName(QStringLiteral("Screen%1").arg(id))
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 776598deb927c259cd2f4d95cfd72677478ecf59 Mon Sep 17 00:00:00 2001 From ef5b1f40b684927f73bc04ab84c396be074cb61e Mon Sep 17 00:00:00 2001
From: Weng Xuetian <wengxt@gmail.com> From: Weng Xuetian <wengxt@gmail.com>
Date: Sun, 27 Nov 2022 12:44:40 -0800 Date: Sun, 27 Nov 2022 12:44:40 -0800
Subject: [PATCH 54/57] Fix frame sync related to unprotected multithread Subject: [PATCH 47/55] Fix frame sync related to unprotected multithread
access access
There is a few crashes happens in real life that frame callback is There is a few crashes happens in real life that frame callback is
@ -21,7 +21,7 @@ Change-Id: Ie01d08d07a2f10f70606ed1935caac09cb4f0382
2 files changed, 43 insertions(+), 32 deletions(-) 2 files changed, 43 insertions(+), 32 deletions(-)
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index d4083121..fb2c59dc 100644 index f322a8d6..6337db00 100644
--- a/src/client/qwaylandwindow.cpp --- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp
@@ -252,13 +252,16 @@ void QWaylandWindow::reset() @@ -252,13 +252,16 @@ void QWaylandWindow::reset()
@ -162,5 +162,5 @@ index 487a91a6..2f219d8c 100644
static QWaylandWindow *mMouseGrab; static QWaylandWindow *mMouseGrab;
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From d0e8f938567f841a779d7365b8b5037037045fc5 Mon Sep 17 00:00:00 2001 From 21e354e7b1878a243d29466b19084083df3d0db9 Mon Sep 17 00:00:00 2001
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
Date: Tue, 27 Sep 2022 22:05:07 +0300 Date: Tue, 27 Sep 2022 22:05:07 +0300
Subject: [PATCH 55/57] Client: Handle zwp_primary_selection_device_manager_v1 Subject: [PATCH 48/55] Client: Handle zwp_primary_selection_device_manager_v1
global removal global removal
The zwp_primary_selection_device_manager_v1 global can be withdrawn if The zwp_primary_selection_device_manager_v1 global can be withdrawn if
@ -19,10 +19,10 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2 files changed, 9 insertions(+), 5 deletions(-) 2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
index e8613ed8..c01e238b 100644 index 6898a881..27f55965 100644
--- a/src/client/qwaylanddisplay.cpp --- a/src/client/qwaylanddisplay.cpp
+++ b/src/client/qwaylanddisplay.cpp +++ b/src/client/qwaylanddisplay.cpp
@@ -515,6 +515,8 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin @@ -519,6 +519,8 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin
#if QT_CONFIG(wayland_client_primary_selection) #if QT_CONFIG(wayland_client_primary_selection)
} else if (interface == QStringLiteral("zwp_primary_selection_device_manager_v1")) { } else if (interface == QStringLiteral("zwp_primary_selection_device_manager_v1")) {
mPrimarySelectionManager.reset(new QWaylandPrimarySelectionDeviceManagerV1(this, id, 1)); mPrimarySelectionManager.reset(new QWaylandPrimarySelectionDeviceManagerV1(this, id, 1));
@ -31,7 +31,7 @@ index e8613ed8..c01e238b 100644
#endif #endif
} else if (interface == QStringLiteral("zwp_text_input_manager_v2") && !mClientSideInputContextRequested) { } else if (interface == QStringLiteral("zwp_text_input_manager_v2") && !mClientSideInputContextRequested) {
mTextInputManager.reset(new QtWayland::zwp_text_input_manager_v2(registry, id, 1)); mTextInputManager.reset(new QtWayland::zwp_text_input_manager_v2(registry, id, 1));
@@ -573,6 +575,13 @@ void QWaylandDisplay::registry_global_remove(uint32_t id) @@ -577,6 +579,13 @@ void QWaylandDisplay::registry_global_remove(uint32_t id)
inputDevice->setTextInput(nullptr); inputDevice->setTextInput(nullptr);
mWaylandIntegration->reconfigureInputContext(); mWaylandIntegration->reconfigureInputContext();
} }
@ -62,5 +62,5 @@ index 832f9678..ea508771 100644
QWaylandPrimarySelectionDeviceV1 *QWaylandPrimarySelectionDeviceManagerV1::createDevice(QWaylandInputDevice *seat) QWaylandPrimarySelectionDeviceV1 *QWaylandPrimarySelectionDeviceManagerV1::createDevice(QWaylandInputDevice *seat)
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From 2904e1b3c3004153b49c4dabfec04cc1ff5e3284 Mon Sep 17 00:00:00 2001 From c12b0ed6db709e2af40ab3687d880aff5c56b5c1 Mon Sep 17 00:00:00 2001
From: Aleix Pol <aleixpol@kde.org> From: Aleix Pol <aleixpol@kde.org>
Date: Mon, 19 Dec 2022 15:31:03 +0100 Date: Mon, 19 Dec 2022 15:31:03 +0100
Subject: [PATCH 56/57] Fixes the build on CentOS Subject: [PATCH 49/55] Fixes the build on CentOS
Change-Id: I3c21972e7681be99b0f45c3ea3a57be285e4ff8e Change-Id: I3c21972e7681be99b0f45c3ea3a57be285e4ff8e
--- ---
@ -22,5 +22,5 @@ index 98acd42d..41cffdf7 100644
if (fd >= 0) if (fd >= 0)
fcntl(fd, F_ADD_SEALS, F_SEAL_SHRINK | F_SEAL_SEAL); fcntl(fd, F_ADD_SEALS, F_SEAL_SHRINK | F_SEAL_SEAL);
-- --
2.39.0 2.40.0

View File

@ -1,7 +1,7 @@
From f6a1e838e371dc90272c62daeea597fe487dec3e Mon Sep 17 00:00:00 2001 From d04d4c7fe2e00285e7d70da42094f213e13c6ed8 Mon Sep 17 00:00:00 2001
From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Date: Mon, 23 May 2022 09:47:24 +0200 Date: Mon, 23 May 2022 09:47:24 +0200
Subject: [PATCH 57/57] client: Avoid protocol error with invalid min/max size Subject: [PATCH 50/55] client: Avoid protocol error with invalid min/max size
If the application sets an invalid minimum and maximum size If the application sets an invalid minimum and maximum size
(where the minimum is higher than the maximum), then we (where the minimum is higher than the maximum), then we
@ -35,7 +35,7 @@ Reviewed-by: David Edmundson <davidedmundson@kde.org>
1 file changed, 2 insertions(+), 2 deletions(-) 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
index fa6d5808..67342b0c 100644 index ead99989..ad666129 100644
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp --- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
@@ -384,10 +384,10 @@ void QWaylandXdgSurface::setSizeHints() @@ -384,10 +384,10 @@ void QWaylandXdgSurface::setSizeHints()
@ -52,5 +52,5 @@ index fa6d5808..67342b0c 100644
maxHeight = 0; maxHeight = 0;
m_toplevel->set_max_size(maxWidth, maxHeight); m_toplevel->set_max_size(maxWidth, maxHeight);
-- --
2.39.0 2.40.0

View File

@ -0,0 +1,38 @@
From fbb9d65cf158bcf63440e9839acae9238ad4e0a7 Mon Sep 17 00:00:00 2001
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
Date: Tue, 22 Nov 2022 23:27:34 +0200
Subject: [PATCH 51/55] Client: Fix handling of Qt::BlankCursor
The cursor may not be properly set when a window has Qt::BlankCursor and
it's shown. In that case, the cursor surface may not be present and
wl_pointer.set_cursor won't be called.
On the other hand, wl_pointer.set_cursor must be always called when
wl_pointer.enter is received.
Pick-to: 6.5
Change-Id: I8540e7a02df1579b3380a1a1d4cfab42c1ab3104
Reviewed-by: David Edmundson <davidedmundson@kde.org>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
(cherry picked from commit e954853f0e68d78ac1a98bc3533713881496064c)
---
src/client/qwaylandinputdevice.cpp | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
index 5b880984..9a0fe49d 100644
--- a/src/client/qwaylandinputdevice.cpp
+++ b/src/client/qwaylandinputdevice.cpp
@@ -310,8 +310,7 @@ void QWaylandInputDevice::Pointer::updateCursor()
auto shape = seat()->mCursor.shape;
if (shape == Qt::BlankCursor) {
- if (mCursor.surface)
- mCursor.surface->hide();
+ getOrCreateCursorSurface()->hide();
return;
}
--
2.40.0

View File

@ -0,0 +1,117 @@
From 6897f62f603df049135347cf402a7a4037092263 Mon Sep 17 00:00:00 2001
From: Marco Martin <notmart@gmail.com>
Date: Fri, 24 Feb 2023 17:40:48 +0100
Subject: [PATCH 52/55] client: Force a roundtrip when an XdgOutput is not
ready yet
Is possible that the server sends a surface_enter before
all the information of the XdgOutput have been processed by the client.
in this case the associated QScreen doesn't exist yet, causing a
QWindow::SetScreen(nullptr), which will fall back to
QGuiApplication::primaryScreen(), having the QWindow being assigned the
wrong screen
Change-Id: I923d5d3a35484deafa6f0572f79c16c27b1f87f0
Reviewed-by: David Edmundson <davidedmundson@kde.org>
---
src/client/qwaylandwindow.cpp | 2 ++
tests/auto/client/shared/coreprotocol.cpp | 2 ++
tests/auto/client/shared/coreprotocol.h | 3 ++
tests/auto/client/xdgoutput/tst_xdgoutput.cpp | 35 +++++++++++++++++++
4 files changed, 42 insertions(+)
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index 6337db00..3b700002 100644
--- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp
@@ -1042,6 +1042,8 @@ void QWaylandWindow::handleScreensChanged()
if (newScreen == mLastReportedScreen)
return;
+ if (!newScreen->isPlaceholder() && !newScreen->QPlatformScreen::screen())
+ mDisplay->forceRoundTrip();
QWindowSystemInterface::handleWindowScreenChanged(window(), newScreen->QPlatformScreen::screen());
mLastReportedScreen = newScreen;
if (fixedToplevelPositions && !QPlatformWindow::parent() && window()->type() != Qt::Popup
diff --git a/tests/auto/client/shared/coreprotocol.cpp b/tests/auto/client/shared/coreprotocol.cpp
index d1a2e7cb..53e12291 100644
--- a/tests/auto/client/shared/coreprotocol.cpp
+++ b/tests/auto/client/shared/coreprotocol.cpp
@@ -185,6 +185,8 @@ void Output::output_bind_resource(QtWaylandServer::wl_output::Resource *resource
if (m_version >= WL_OUTPUT_DONE_SINCE_VERSION)
wl_output::send_done(resource->handle);
+
+ Q_EMIT outputBound(resource);
}
// Seat stuff
diff --git a/tests/auto/client/shared/coreprotocol.h b/tests/auto/client/shared/coreprotocol.h
index 210d8ddb..00c439e1 100644
--- a/tests/auto/client/shared/coreprotocol.h
+++ b/tests/auto/client/shared/coreprotocol.h
@@ -273,6 +273,9 @@ public:
OutputData m_data;
int m_version = 1; // TODO: remove on libwayland upgrade
+Q_SIGNALS:
+ void outputBound(Resource *resource);
+
protected:
void output_bind_resource(Resource *resource) override;
};
diff --git a/tests/auto/client/xdgoutput/tst_xdgoutput.cpp b/tests/auto/client/xdgoutput/tst_xdgoutput.cpp
index 80429608..68e8d77a 100644
--- a/tests/auto/client/xdgoutput/tst_xdgoutput.cpp
+++ b/tests/auto/client/xdgoutput/tst_xdgoutput.cpp
@@ -55,6 +55,7 @@ private slots:
void primaryScreen();
void overrideGeometry();
void changeGeometry();
+ void outputCreateEnterRace();
};
void tst_xdgoutput::cleanup()
@@ -134,5 +135,39 @@ void tst_xdgoutput::changeGeometry()
exec([=] { remove(output(1)); });
}
+void tst_xdgoutput::outputCreateEnterRace()
+{
+ m_config.autoConfigure = true;
+ m_config.autoEnter = false;
+ QRasterWindow window;
+ QSignalSpy screenChanged(&window, &QWindow::screenChanged);
+ window.resize(400, 320);
+ window.show();
+ QCOMPOSITOR_TRY_VERIFY(xdgSurface() && xdgSurface()->m_committedConfigureSerial);
+ exec([=] { xdgToplevel()->surface()->sendEnter(output(0));});
+
+ QTRY_COMPARE(QGuiApplication::screens().size(), 1);
+ QScreen *primaryScreen = QGuiApplication::screens().first();
+ QCOMPARE(window.screen(), primaryScreen);
+
+ auto *out = exec([=] {
+ return add<Output>();
+ });
+
+ // In Compositor Thread
+ connect(out, &Output::outputBound, this, [this](QtWaylandServer::wl_output::Resource *resource){
+ auto surface = xdgToplevel()->surface();
+ surface->sendLeave(output(0));
+ surface->QtWaylandServer::wl_surface::send_enter(surface->resource()->handle, resource->handle);
+ }, Qt::DirectConnection);
+
+ QTRY_COMPARE(QGuiApplication::screens().size(), 2);
+ QTRY_COMPARE(window.screen(), QGuiApplication::screens()[1]);
+
+ exec([=] { remove(out); });
+ m_config.autoConfigure = false;
+ m_config.autoEnter = true;
+}
+
QCOMPOSITOR_TEST_MAIN(tst_xdgoutput)
#include "tst_xdgoutput.moc"
--
2.40.0

View File

@ -0,0 +1,138 @@
From 31eab11d3b6697a76cc7802d02e525c1152a42c2 Mon Sep 17 00:00:00 2001
From: Tang Haixiang <tanghaixiang@uniontech.com>
Date: Thu, 22 Dec 2022 15:19:53 +0800
Subject: [PATCH 53/55] Client: Manage QMimeData lifecycle
QMimeData is created by user, it is not taken care of in qtwayland,
which will cause memory leak.
It is now handled in qtwayland that when a new QMimeData is set,
the previous QMimeData is freed.
Change-Id: Ic502021fe700c7ee10454d94f0d1868901809af7
Reviewed-by: David Edmundson <davidedmundson@kde.org>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
(cherry picked from commit 3af40c6c42703a65656fdd3322183abb2905e44d)
---
src/client/qwaylandclipboard.cpp | 27 +++++++++++++++++++++------
src/client/qwaylandclipboard_p.h | 1 +
src/client/qwaylanddatasource.cpp | 5 -----
src/client/qwaylanddatasource_p.h | 2 --
4 files changed, 22 insertions(+), 13 deletions(-)
diff --git a/src/client/qwaylandclipboard.cpp b/src/client/qwaylandclipboard.cpp
index 81f48e05..14561c77 100644
--- a/src/client/qwaylandclipboard.cpp
+++ b/src/client/qwaylandclipboard.cpp
@@ -54,10 +54,15 @@ namespace QtWaylandClient {
QWaylandClipboard::QWaylandClipboard(QWaylandDisplay *display)
: mDisplay(display)
{
+ m_clientClipboard[QClipboard::Clipboard] = nullptr;
+ m_clientClipboard[QClipboard::Selection] = nullptr;
}
QWaylandClipboard::~QWaylandClipboard()
{
+ if (m_clientClipboard[QClipboard::Clipboard] != m_clientClipboard[QClipboard::Selection])
+ delete m_clientClipboard[QClipboard::Clipboard];
+ delete m_clientClipboard[QClipboard::Selection];
}
QMimeData *QWaylandClipboard::mimeData(QClipboard::Mode mode)
@@ -69,8 +74,8 @@ QMimeData *QWaylandClipboard::mimeData(QClipboard::Mode mode)
switch (mode) {
case QClipboard::Clipboard:
if (auto *dataDevice = seat->dataDevice()) {
- if (auto *source = dataDevice->selectionSource())
- return source->mimeData();
+ if (dataDevice->selectionSource())
+ return m_clientClipboard[QClipboard::Clipboard];
if (auto *offer = dataDevice->selectionOffer())
return offer->mimeData();
}
@@ -78,8 +83,8 @@ QMimeData *QWaylandClipboard::mimeData(QClipboard::Mode mode)
case QClipboard::Selection:
#if QT_CONFIG(wayland_client_primary_selection)
if (auto *selectionDevice = seat->primarySelectionDevice()) {
- if (auto *source = selectionDevice->selectionSource())
- return source->mimeData();
+ if (selectionDevice->selectionSource())
+ return m_clientClipboard[QClipboard::Selection];
if (auto *offer = selectionDevice->selectionOffer())
return offer->mimeData();
}
@@ -104,17 +109,27 @@ void QWaylandClipboard::setMimeData(QMimeData *data, QClipboard::Mode mode)
if (data && data->hasFormat(plain) && !data->hasFormat(utf8))
data->setData(utf8, data->data(plain));
+ if (m_clientClipboard[mode]) {
+ if (m_clientClipboard[QClipboard::Clipboard] != m_clientClipboard[QClipboard::Selection])
+ delete m_clientClipboard[mode];
+ m_clientClipboard[mode] = nullptr;
+ }
+
+ m_clientClipboard[mode] = data;
+
switch (mode) {
case QClipboard::Clipboard:
if (auto *dataDevice = seat->dataDevice()) {
- dataDevice->setSelectionSource(data ? new QWaylandDataSource(mDisplay->dndSelectionHandler(), data) : nullptr);
+ dataDevice->setSelectionSource(data ? new QWaylandDataSource(mDisplay->dndSelectionHandler(),
+ m_clientClipboard[QClipboard::Clipboard]) : nullptr);
emitChanged(mode);
}
break;
case QClipboard::Selection:
#if QT_CONFIG(wayland_client_primary_selection)
if (auto *selectionDevice = seat->primarySelectionDevice()) {
- selectionDevice->setSelectionSource(data ? new QWaylandPrimarySelectionSourceV1(mDisplay->primarySelectionManager(), data) : nullptr);
+ selectionDevice->setSelectionSource(data ? new QWaylandPrimarySelectionSourceV1(mDisplay->primarySelectionManager(),
+ m_clientClipboard[QClipboard::Selection]) : nullptr);
emitChanged(mode);
}
#endif
diff --git a/src/client/qwaylandclipboard_p.h b/src/client/qwaylandclipboard_p.h
index ce14e124..bb52683d 100644
--- a/src/client/qwaylandclipboard_p.h
+++ b/src/client/qwaylandclipboard_p.h
@@ -80,6 +80,7 @@ public:
private:
QWaylandDisplay *mDisplay = nullptr;
QMimeData m_emptyData;
+ QMimeData *m_clientClipboard[2];
};
}
diff --git a/src/client/qwaylanddatasource.cpp b/src/client/qwaylanddatasource.cpp
index 5599cbd4..e085152c 100644
--- a/src/client/qwaylanddatasource.cpp
+++ b/src/client/qwaylanddatasource.cpp
@@ -71,11 +71,6 @@ QWaylandDataSource::~QWaylandDataSource()
destroy();
}
-QMimeData * QWaylandDataSource::mimeData() const
-{
- return m_mime_data;
-}
-
void QWaylandDataSource::data_source_cancelled()
{
Q_EMIT cancelled();
diff --git a/src/client/qwaylanddatasource_p.h b/src/client/qwaylanddatasource_p.h
index 96f07bc3..14d1542d 100644
--- a/src/client/qwaylanddatasource_p.h
+++ b/src/client/qwaylanddatasource_p.h
@@ -74,8 +74,6 @@ public:
QWaylandDataSource(QWaylandDataDeviceManager *dataDeviceManager, QMimeData *mimeData);
~QWaylandDataSource() override;
- QMimeData *mimeData() const;
-
Q_SIGNALS:
void cancelled();
void finished();
--
2.40.0

View File

@ -0,0 +1,34 @@
From 18c2bcec31f68aafd66d7ec503ec6511ca804d07 Mon Sep 17 00:00:00 2001
From: Aleix Pol <aleixpol@kde.org>
Date: Mon, 6 Mar 2023 01:11:45 +0100
Subject: [PATCH 54/55] client: Do not cast placeholder screens to
QWaylandScreen
It's wrong to C-cast an object to a class that isn't theirs. Check if it
is a placeholder first.
Pick-to: 5.15 6.2 6.5
Change-Id: I45d3c423422ae6638a033fb0f4cfefc7cd4460f0
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
(cherry picked from commit a53f022393a1276dbf8eccbae04cb0bd6cea0160)
---
src/client/qwaylandnativeinterface.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/client/qwaylandnativeinterface.cpp b/src/client/qwaylandnativeinterface.cpp
index bf54a1a0..9763c312 100644
--- a/src/client/qwaylandnativeinterface.cpp
+++ b/src/client/qwaylandnativeinterface.cpp
@@ -139,7 +139,7 @@ void *QWaylandNativeInterface::nativeResourceForScreen(const QByteArray &resourc
{
QByteArray lowerCaseResource = resourceString.toLower();
- if (lowerCaseResource == "output")
+ if (lowerCaseResource == "output" && !screen->handle()->isPlaceholder())
return ((QWaylandScreen *) screen->handle())->output();
return nullptr;
--
2.40.0

View File

@ -0,0 +1,41 @@
From c4c3fc69250c01cb35aaae5ea1ea2bcc8236dff0 Mon Sep 17 00:00:00 2001
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
Date: Thu, 12 Jan 2023 14:49:25 +0200
Subject: [PATCH 55/55] Client: Remove flip popup constraints
xdg_positioner doesn't have good anchor rect and other needed
information so the compositor can properly flip popups. In some windows
I see that some popups are flipped in such a way that the popups look
"detached" from the parent window.
With the information that QtWayland provides so far only slide
constraint adjustments can produce somewhat expected results. Although
there will be still some issues near screen edges.
Pick-to: 6.5 6.4 6.2 5.15
Task-number: QTBUG-87303
Change-Id: I4021f497b78e62651fe606c4be21a387a92edd6c
Reviewed-by: Liang Qi <liang.qi@qt.io>
(cherry picked from commit d7a5dab0182cba19d7f59e542672aa3d1b2e859e)
---
src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
index ad666129..822b385c 100644
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
@@ -425,9 +425,7 @@ void QWaylandXdgSurface::setPopup(QWaylandWindow *parent)
positioner->set_gravity(QtWayland::xdg_positioner::gravity_bottom_right);
positioner->set_size(m_window->geometry().width(), m_window->geometry().height());
positioner->set_constraint_adjustment(QtWayland::xdg_positioner::constraint_adjustment_slide_x
- | QtWayland::xdg_positioner::constraint_adjustment_slide_y
- | QtWayland::xdg_positioner::constraint_adjustment_flip_x
- | QtWayland::xdg_positioner::constraint_adjustment_flip_y);
+ | QtWayland::xdg_positioner::constraint_adjustment_slide_y);
m_popup = new Popup(this, parent, positioner);
positioner->destroy();
--
2.40.0

View File

@ -2,8 +2,8 @@
Summary: Qt5 - Wayland platform support and QtCompositor module Summary: Qt5 - Wayland platform support and QtCompositor module
Name: qt5-%{qt_module} Name: qt5-%{qt_module}
Version: 5.15.8 Version: 5.15.9
Release: 6%{?dist} Release: 1%{?dist}
License: LGPL-3.0-only OR GPL-3.0-only WITH Qt-GPL-exception-1.0 License: LGPL-3.0-only OR GPL-3.0-only WITH Qt-GPL-exception-1.0
Url: http://www.qt.io Url: http://www.qt.io
@ -27,50 +27,48 @@ Patch10: 0010-Client-Don-t-always-recreate-frame-callbacks.patch
Patch11: 0011-Client-Always-destroy-frame-callback-in-the-actual-c.patch Patch11: 0011-Client-Always-destroy-frame-callback-in-the-actual-c.patch
Patch12: 0012-Wayland-client-use-wl_keyboard-to-determine-active-s.patch Patch12: 0012-Wayland-client-use-wl_keyboard-to-determine-active-s.patch
Patch13: 0013-Client-do-not-empty-clipboard-when-a-new-popup-windo.patch Patch13: 0013-Client-do-not-empty-clipboard-when-a-new-popup-windo.patch
Patch14: 0014-Set-preedit-cursor-when-cursor-equals-to-0.patch Patch14: 0014-Client-Implement-DataDeviceV3.patch
Patch15: 0015-Client-Implement-DataDeviceV3.patch Patch15: 0015-Client-Delay-deletion-of-QDrag-object-until-after-we.patch
Patch16: 0016-Client-Delay-deletion-of-QDrag-object-until-after-we.patch Patch16: 0016-Client-Avoid-processing-of-events-when-showing-windo.patch
Patch17: 0017-Client-Avoid-processing-of-events-when-showing-windo.patch Patch17: 0017-Handle-registry_global-out-of-constructor.patch
Patch18: 0018-Handle-registry_global-out-of-constructor.patch Patch18: 0018-Connect-flushRequest-after-forceRoundTrip.patch
Patch19: 0019-Connect-flushRequest-after-forceRoundTrip.patch Patch19: 0019-Move-the-wayland-socket-polling-to-a-separate-event-.patch
Patch20: 0020-Move-the-wayland-socket-polling-to-a-separate-event-.patch Patch20: 0020-Client-Remove-mWaitingForUpdateDelivery.patch
Patch21: 0021-Fix-crash-if-no-input-method-module-could-be-loaded.patch Patch21: 0021-client-Simplify-round-trip-behavior.patch
Patch22: 0022-Client-Remove-mWaitingForUpdateDelivery.patch Patch22: 0022-Client-Fix-opaque-region-setter.patch
Patch23: 0023-Cursor-position-0-should-still-show-the-cursor.patch Patch23: 0023-Use-proper-dependencies-in-compile-tests.patch
Patch24: 0024-Update-the-preedit-styling-mapping.patch Patch24: 0024-Revert-Client-Remove-mWaitingForUpdateDelivery.patch
Patch25: 0025-client-Simplify-round-trip-behavior.patch Patch25: 0025-Fix-race-condition-on-mWaitingForUpdateDelivery.patch
Patch26: 0026-Client-Fix-opaque-region-setter.patch Patch26: 0026-use-poll-2-when-reading-from-clipboard.patch
Patch27: 0027-Use-proper-dependencies-in-compile-tests.patch Patch27: 0027-Reduce-memory-leakage.patch
Patch28: 0028-client-update-button-state-and-etc-in-pointer_leave.patch Patch28: 0028-Fix-build-with-libcxx-missing-array-include.patch
Patch29: 0029-Revert-Client-Remove-mWaitingForUpdateDelivery.patch Patch29: 0029-Only-close-popup-in-the-the-hierchary.patch
Patch30: 0030-Fix-race-condition-on-mWaitingForUpdateDelivery.patch Patch30: 0030-Build-fixes-for-GCC-11.patch
Patch31: 0031-use-poll-2-when-reading-from-clipboard.patch Patch31: 0031-Check-pointer-for-null-before-use-in-ASSERT.patch
Patch32: 0032-Reduce-memory-leakage.patch Patch32: 0032-Use-wl_surface.damage_buffer-on-the-client-side.patch
Patch33: 0033-Fix-build-with-libcxx-missing-array-include.patch Patch33: 0033-Client-clear-focus-on-touch-cancel.patch
Patch34: 0034-Only-close-popup-in-the-the-hierchary.patch Patch34: 0034-Guard-mResizeDirty-by-the-correctMutex.patch
Patch35: 0035-Build-fixes-for-GCC-11.patch Patch35: 0035-client-Synthesize-enter-leave-event-for-popup-in-xdg.patch
Patch36: 0036-Check-pointer-for-null-before-use-in-ASSERT.patch Patch36: 0036-Fix-compile-tests.patch
Patch37: 0037-Use-wl_surface.damage_buffer-on-the-client-side.patch Patch37: 0037-Use-CRLF-line-delimiter-for-text-uri-list-data.patch
Patch38: 0038-Client-clear-focus-on-touch-cancel.patch Patch38: 0038-Avoid-calling-requestUpdate-from-wrong-thread.patch
Patch39: 0039-Guard-mResizeDirty-by-the-correctMutex.patch Patch39: 0039-Call-finishDrag-in-QWaylandDataDevice-dragSourceCanc.patch
Patch40: 0040-client-Synthesize-enter-leave-event-for-popup-in-xdg.patch Patch40: 0040-Hold-surface-read-lock-throughout-QWaylandEglWindow-.patch
Patch41: 0041-Fix-compile-tests.patch Patch41: 0041-Client-Ensure-that-wl_surface-lives-as-long-as-qtqui.patch
Patch42: 0042-Use-CRLF-line-delimiter-for-text-uri-list-data.patch Patch42: 0042-Keep-toplevel-windows-in-the-top-left-corner-of-the-.patch
Patch43: 0043-Fix-missing-update-when-toggling-client-side-decorat.patch Patch43: 0043-Revert-Client-Ensure-that-wl_surface-lives-as-long-a.patch
Patch44: 0044-Avoid-calling-requestUpdate-from-wrong-thread.patch Patch44: 0044-Client-Add-F_SEAL_SHRINK-seal-to-shm-backing-file.patch
Patch45: 0045-Client-support-high-dpi-mode-for-window-icon.patch Patch45: 0045-Client-Call-wl_output_release-upon-QWaylandScreen-de.patch
Patch46: 0046-Call-finishDrag-in-QWaylandDataDevice-dragSourceCanc.patch Patch46: 0046-Client-Bump-wl_output-version.patch
Patch47: 0047-Hold-surface-read-lock-throughout-QWaylandEglWindow-.patch Patch47: 0047-Fix-frame-sync-related-to-unprotected-multithread-ac.patch
Patch48: 0048-Client-Ensure-that-wl_surface-lives-as-long-as-qtqui.patch Patch48: 0048-Client-Handle-zwp_primary_selection_device_manager_v.patch
Patch49: 0049-Keep-toplevel-windows-in-the-top-left-corner-of-the-.patch Patch49: 0049-Fixes-the-build-on-CentOS.patch
Patch50: 0050-Revert-Client-Ensure-that-wl_surface-lives-as-long-a.patch Patch50: 0050-client-Avoid-protocol-error-with-invalid-min-max-siz.patch
Patch51: 0051-Client-Add-F_SEAL_SHRINK-seal-to-shm-backing-file.patch Patch51: 0051-Client-Fix-handling-of-Qt-BlankCursor.patch
Patch52: 0052-Client-Call-wl_output_release-upon-QWaylandScreen-de.patch Patch52: 0052-client-Force-a-roundtrip-when-an-XdgOutput-is-not-re.patch
Patch53: 0053-Client-Bump-wl_output-version.patch Patch53: 0053-Client-Manage-QMimeData-lifecycle.patch
Patch54: 0054-Fix-frame-sync-related-to-unprotected-multithread-ac.patch Patch54: 0054-client-Do-not-cast-placeholder-screens-to-QWaylandSc.patch
Patch55: 0055-Client-Handle-zwp_primary_selection_device_manager_v.patch Patch55: 0055-Client-Remove-flip-popup-constraints.patch
Patch56: 0056-Fixes-the-build-on-CentOS.patch
Patch57: 0057-client-Avoid-protocol-error-with-invalid-min-max-siz.patch
Patch80: 0080-Client-set-constraint-adjustments-for-popups-in-xdg.patch Patch80: 0080-Client-set-constraint-adjustments-for-popups-in-xdg.patch
@ -183,6 +181,9 @@ popd
%changelog %changelog
* Tue Apr 11 2023 Jan Grulich <jgrulich@redhat.com>
- 5.15.9
* Wed Mar 29 2023 Than Ngo <than@redhat.com> - 5.15.8-6 * Wed Mar 29 2023 Than Ngo <than@redhat.com> - 5.15.8-6
- Related bz#2179854, rebuild against new qt5-qtbase - Related bz#2179854, rebuild against new qt5-qtbase

View File

@ -1 +1 @@
SHA512 (qtwayland-everywhere-opensource-src-5.15.8.tar.xz) = 6c6e9dc20f98d71abd7dba54ff278bf4535e70f86bfc4e6dd46c1af7c87777f045a6aba02bba3eb786f7cf383da5fb72b03e1e6ec636c8be0cde0e4e5b7b5b2d SHA512 (qtwayland-everywhere-opensource-src-5.15.9.tar.xz) = d108d63ceeb3b1a8905ad7f53a7271fca6a3506679d352b7290cdf8c00e1c180b6c561ee013a674002b89e23f58cfb7b909dfc5a8fdec6cece7e0a782be77978