Re-enable CSD backports from Qt6 (will be used by QGnomePlatform)

This commit is contained in:
Jan Grulich 2022-08-25 11:11:02 +02:00
parent 665dd1a06b
commit 137ccdd1d4
2 changed files with 26 additions and 29 deletions

View File

@ -3,7 +3,7 @@
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.5 Version: 5.15.5
Release: 3%{?dist} Release: 4%{?dist}
License: LGPLv3 License: LGPLv3
Url: http://www.qt.io Url: http://www.qt.io
@ -62,8 +62,8 @@ Patch50: 0050-Client-set-constraint-adjustments-for-popups-in-xdg.patch
Patch100: 0100-Keep-toplevel-windows-in-the-top-left-corner-of-the-screen.patch Patch100: 0100-Keep-toplevel-windows-in-the-top-left-corner-of-the-screen.patch
# Disable for now, there is a Qt bug making this broken # Disable for now, there is a Qt bug making this broken
# Patch102: qtwayland-decoration-support-backports-from-qt6.patch Patch102: qtwayland-decoration-support-backports-from-qt6.patch
Patch103: qtwayland-client-expose-toplevel-window-state.patch # Patch103: qtwayland-client-expose-toplevel-window-state.patch
# Upstreamable patches # Upstreamable patches
@ -172,6 +172,9 @@ popd
%changelog %changelog
* Thu Aug 25 2022 Jan Grulich <jgrulich@redhat.com> - 5.15.5-4
- Re-enable CSD backports from Qt6 (will be used by QGnomePlatform)
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 5.15.5-3 * Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 5.15.5-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild

View File

@ -1,5 +1,5 @@
diff --git a/src/client/qwaylandabstractdecoration_p.h b/src/client/qwaylandabstractdecoration_p.h diff --git a/src/client/qwaylandabstractdecoration_p.h b/src/client/qwaylandabstractdecoration_p.h
index 81c8e177..61cbde77 100644 index 81c8e17..61cbde7 100644
--- a/src/client/qwaylandabstractdecoration_p.h --- a/src/client/qwaylandabstractdecoration_p.h
+++ b/src/client/qwaylandabstractdecoration_p.h +++ b/src/client/qwaylandabstractdecoration_p.h
@@ -82,6 +82,12 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandAbstractDecoration : public QObject @@ -82,6 +82,12 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandAbstractDecoration : public QObject
@ -26,10 +26,10 @@ index 81c8e177..61cbde77 100644
const QImage &contentImage(); const QImage &contentImage();
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 bd70f4af..0e819235 100644 index ec232cd..54b27f1 100644
--- a/src/client/qwaylandwindow.cpp --- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp
@@ -380,6 +380,16 @@ void QWaylandWindow::setGeometry(const QRect &rect) @@ -383,6 +383,16 @@ void QWaylandWindow::setGeometry(const QRect &r)
void QWaylandWindow::resizeFromApplyConfigure(const QSize &sizeWithMargins, const QPoint &offset) void QWaylandWindow::resizeFromApplyConfigure(const QSize &sizeWithMargins, const QPoint &offset)
{ {
QMargins margins = frameMargins(); QMargins margins = frameMargins();
@ -46,7 +46,7 @@ index bd70f4af..0e819235 100644
int widthWithoutMargins = qMax(sizeWithMargins.width() - (margins.left() + margins.right()), 1); int widthWithoutMargins = qMax(sizeWithMargins.width() - (margins.left() + margins.right()), 1);
int heightWithoutMargins = qMax(sizeWithMargins.height() - (margins.top() + margins.bottom()), 1); int heightWithoutMargins = qMax(sizeWithMargins.height() - (margins.top() + margins.bottom()), 1);
QRect geometry(windowGeometry().topLeft(), QSize(widthWithoutMargins, heightWithoutMargins)); QRect geometry(windowGeometry().topLeft(), QSize(widthWithoutMargins, heightWithoutMargins));
@@ -690,7 +700,12 @@ QSize QWaylandWindow::surfaceSize() const @@ -710,7 +720,12 @@ QSize QWaylandWindow::surfaceSize() const
*/ */
QRect QWaylandWindow::windowContentGeometry() const QRect QWaylandWindow::windowContentGeometry() const
{ {
@ -60,8 +60,8 @@ index bd70f4af..0e819235 100644
} }
/*! /*!
@@ -1079,6 +1094,21 @@ bool QWaylandWindow::setMouseGrabEnabled(bool grab) @@ -1111,6 +1126,16 @@ Qt::WindowStates QWaylandWindow::windowStates() const
return true; return mLastReportedWindowStates;
} }
+QWaylandWindow::ToplevelWindowTilingStates QWaylandWindow::toplevelWindowTilingStates() const +QWaylandWindow::ToplevelWindowTilingStates QWaylandWindow::toplevelWindowTilingStates() const
@ -73,17 +73,12 @@ index bd70f4af..0e819235 100644
+{ +{
+ mLastReportedToplevelWindowTilingStates = states; + mLastReportedToplevelWindowTilingStates = states;
+} +}
+
+Qt::WindowStates QWaylandWindow::windowStates() const
+{
+ return mLastReportedWindowStates;
+}
+ +
void QWaylandWindow::handleWindowStatesChanged(Qt::WindowStates states) void QWaylandWindow::handleWindowStatesChanged(Qt::WindowStates states)
{ {
createDecoration(); createDecoration();
diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h
index 6cc1664b..93ba0623 100644 index 1907f10..33a3b83 100644
--- a/src/client/qwaylandwindow_p.h --- a/src/client/qwaylandwindow_p.h
+++ b/src/client/qwaylandwindow_p.h +++ b/src/client/qwaylandwindow_p.h
@@ -95,6 +95,15 @@ public: @@ -95,6 +95,15 @@ public:
@ -102,18 +97,17 @@ index 6cc1664b..93ba0623 100644
QWaylandWindow(QWindow *window, QWaylandDisplay *display); QWaylandWindow(QWindow *window, QWaylandDisplay *display);
~QWaylandWindow() override; ~QWaylandWindow() override;
@@ -145,6 +154,10 @@ public: @@ -148,6 +157,9 @@ public:
void handleContentOrientationChange(Qt::ScreenOrientation orientation) override; void handleContentOrientationChange(Qt::ScreenOrientation orientation) override;
void setOrientationMask(Qt::ScreenOrientations mask); void setOrientationMask(Qt::ScreenOrientations mask);
+ ToplevelWindowTilingStates toplevelWindowTilingStates() const; + ToplevelWindowTilingStates toplevelWindowTilingStates() const;
+ void handleToplevelWindowTilingStatesChanged(ToplevelWindowTilingStates states); + void handleToplevelWindowTilingStatesChanged(ToplevelWindowTilingStates states);
+ +
+ Qt::WindowStates windowStates() const;
void setWindowState(Qt::WindowStates states) override; void setWindowState(Qt::WindowStates states) override;
void setWindowFlags(Qt::WindowFlags flags) override; void setWindowFlags(Qt::WindowFlags flags) override;
void handleWindowStatesChanged(Qt::WindowStates states); void handleWindowStatesChanged(Qt::WindowStates states);
@@ -256,6 +269,7 @@ protected: @@ -260,6 +272,7 @@ protected:
QRegion mMask; QRegion mMask;
QRegion mOpaqueArea; QRegion mOpaqueArea;
Qt::WindowStates mLastReportedWindowStates = Qt::WindowNoState; Qt::WindowStates mLastReportedWindowStates = Qt::WindowNoState;
@ -121,7 +115,7 @@ index 6cc1664b..93ba0623 100644
QWaylandShmBackingStore *mBackingStore = nullptr; QWaylandShmBackingStore *mBackingStore = nullptr;
QWaylandBuffer *mQueuedBuffer = nullptr; QWaylandBuffer *mQueuedBuffer = nullptr;
@@ -292,6 +306,8 @@ private: @@ -296,6 +309,8 @@ private:
friend class QWaylandSubSurface; friend class QWaylandSubSurface;
}; };
@ -131,7 +125,7 @@ index 6cc1664b..93ba0623 100644
{ {
return mWindowIcon; return mWindowIcon;
diff --git a/src/plugins/decorations/bradient/main.cpp b/src/plugins/decorations/bradient/main.cpp diff --git a/src/plugins/decorations/bradient/main.cpp b/src/plugins/decorations/bradient/main.cpp
index e75fda3c..72dda67f 100644 index e75fda3..72dda67 100644
--- a/src/plugins/decorations/bradient/main.cpp --- a/src/plugins/decorations/bradient/main.cpp
+++ b/src/plugins/decorations/bradient/main.cpp +++ b/src/plugins/decorations/bradient/main.cpp
@@ -72,7 +72,7 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandBradientDecoration : public QWaylandAbstra @@ -72,7 +72,7 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandBradientDecoration : public QWaylandAbstra
@ -157,18 +151,18 @@ index e75fda3c..72dda67f 100644
} }
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 7d33dabd..cf7eb4e9 100644 index 2666df2..8d8ac85 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
@@ -94,6 +94,7 @@ void QWaylandXdgSurface::Toplevel::applyConfigure() @@ -88,6 +88,7 @@ void QWaylandXdgSurface::Toplevel::applyConfigure()
// TODO: none of the other plugins send WindowActive either, but is it on purpose? && !m_xdgSurface->m_window->display()->isKeyboardAvailable())
Qt::WindowStates statesWithoutActive = m_pending.states & ~Qt::WindowActive; m_xdgSurface->m_window->display()->handleWindowDeactivated(m_xdgSurface->m_window);
+ m_xdgSurface->m_window->handleToplevelWindowTilingStatesChanged(m_toplevelStates); + m_xdgSurface->m_window->handleToplevelWindowTilingStatesChanged(m_toplevelStates);
m_xdgSurface->m_window->handleWindowStatesChanged(statesWithoutActive); m_xdgSurface->m_window->handleWindowStatesChanged(m_pending.states);
if (m_pending.size.isEmpty()) { if (m_pending.size.isEmpty()) {
@@ -126,6 +127,7 @@ void QWaylandXdgSurface::Toplevel::xdg_toplevel_configure(int32_t width, int32_t @@ -120,6 +121,7 @@ void QWaylandXdgSurface::Toplevel::xdg_toplevel_configure(int32_t width, int32_t
size_t numStates = states->size / sizeof(uint32_t); size_t numStates = states->size / sizeof(uint32_t);
m_pending.states = Qt::WindowNoState; m_pending.states = Qt::WindowNoState;
@ -176,7 +170,7 @@ index 7d33dabd..cf7eb4e9 100644
for (size_t i = 0; i < numStates; i++) { for (size_t i = 0; i < numStates; i++) {
switch (xdgStates[i]) { switch (xdgStates[i]) {
@@ -138,6 +140,18 @@ void QWaylandXdgSurface::Toplevel::xdg_toplevel_configure(int32_t width, int32_t @@ -132,6 +134,18 @@ void QWaylandXdgSurface::Toplevel::xdg_toplevel_configure(int32_t width, int32_t
case XDG_TOPLEVEL_STATE_FULLSCREEN: case XDG_TOPLEVEL_STATE_FULLSCREEN:
m_pending.states |= Qt::WindowFullScreen; m_pending.states |= Qt::WindowFullScreen;
break; break;
@ -195,7 +189,7 @@ index 7d33dabd..cf7eb4e9 100644
default: default:
break; break;
} }
@@ -457,7 +471,7 @@ void QWaylandXdgSurface::xdg_surface_configure(uint32_t serial) @@ -458,7 +472,7 @@ void QWaylandXdgSurface::xdg_surface_configure(uint32_t serial)
} }
QWaylandXdgShell::QWaylandXdgShell(QWaylandDisplay *display, uint32_t id, uint32_t availableVersion) QWaylandXdgShell::QWaylandXdgShell(QWaylandDisplay *display, uint32_t id, uint32_t availableVersion)
@ -205,7 +199,7 @@ index 7d33dabd..cf7eb4e9 100644
{ {
display->addRegistryListener(&QWaylandXdgShell::handleRegistryGlobal, this); display->addRegistryListener(&QWaylandXdgShell::handleRegistryGlobal, this);
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h
index 0c98be35..d7912132 100644 index 0c98be3..d791213 100644
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h --- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h +++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h
@@ -58,6 +58,7 @@ @@ -58,6 +58,7 @@