diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp index 6652c876813..60540fb0c81 100644 --- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp +++ b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp @@ -94,9 +94,6 @@ void QWaylandXdgSurfaceV6::Toplevel::applyConfigure() m_xdgSurface->m_window->resizeFromApplyConfigure(m_pending.size); } - QSize windowGeometrySize = m_xdgSurface->m_window->window()->frameGeometry().size(); - m_xdgSurface->set_window_geometry(0, 0, windowGeometrySize.width(), windowGeometrySize.height()); - m_xdgSurface->setSizeHints(); m_applied = m_pending; @@ -318,6 +315,11 @@ void QWaylandXdgSurfaceV6::propagateSizeHints() m_window->commit(); } +void QWaylandXdgSurfaceV6::setWindowGeometry(const QRect &rect) +{ + set_window_geometry(rect.x(), rect.y(), rect.width(), rect.height()); +} + void QWaylandXdgSurfaceV6::setSizeHints() { if (m_toplevel && m_window) { diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6_p.h b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6_p.h index 62c13157ed7..f77a4d4baeb 100644 --- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6_p.h +++ b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6_p.h @@ -89,6 +89,7 @@ public: void applyConfigure() override; bool wantsDecorations() const override; void propagateSizeHints() override; + void setWindowGeometry(const QRect &rect) override; void setSizeHints(); diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp index fc515ca1bdc..78b7b45c8ab 100644 --- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +++ b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp @@ -104,9 +104,6 @@ void QWaylandXdgSurface::Toplevel::applyConfigure() m_xdgSurface->m_window->resizeFromApplyConfigure(m_pending.size); } - QSize windowGeometrySize = m_xdgSurface->m_window->window()->frameGeometry().size(); - m_xdgSurface->set_window_geometry(0, 0, windowGeometrySize.width(), windowGeometrySize.height()); - m_xdgSurface->setSizeHints(); m_applied = m_pending; @@ -352,6 +349,11 @@ void QWaylandXdgSurface::propagateSizeHints() m_window->commit(); } +void QWaylandXdgSurface::setWindowGeometry(const QRect &rect) +{ + set_window_geometry(rect.x(), rect.y(), rect.width(), rect.height()); +} + void QWaylandXdgSurface::setSizeHints() { if (m_toplevel && m_window) { diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h index c39ccde3b43..8f8682a4792 100644 --- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h +++ b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h @@ -93,6 +93,7 @@ public: void applyConfigure() override; bool wantsDecorations() const override; void propagateSizeHints() override; + void setWindowGeometry(const QRect &rect) override; void setSizeHints(); diff --git a/src/plugins/platforms/wayland/qwaylandshellsurface_p.h b/src/plugins/platforms/wayland/qwaylandshellsurface_p.h index 804056e549d..f5f202d0817 100644 --- a/src/plugins/platforms/wayland/qwaylandshellsurface_p.h +++ b/src/plugins/platforms/wayland/qwaylandshellsurface_p.h @@ -99,6 +99,8 @@ public: virtual void propagateSizeHints() {} + virtual void setWindowGeometry(const QRect &rect) { Q_UNUSED(rect); } + private: QWaylandWindow *m_window = nullptr; friend class QWaylandWindow; diff --git a/src/plugins/platforms/wayland/qwaylandwindow.cpp b/src/plugins/platforms/wayland/qwaylandwindow.cpp index e8ff081c8fb..2301875c912 100644 --- a/src/plugins/platforms/wayland/qwaylandwindow.cpp +++ b/src/plugins/platforms/wayland/qwaylandwindow.cpp @@ -339,6 +339,9 @@ void QWaylandWindow::setGeometry(const QRect &rect) QRect exposeGeometry(QPoint(), geometry().size()); if (exposeGeometry != mLastExposeGeometry) sendExposeEvent(exposeGeometry); + + if (mShellSurface) + mShellSurface->setWindowGeometry(QRect(QPoint(0, 0), window()->frameGeometry().size())); } void QWaylandWindow::resizeFromApplyConfigure(const QSize &sizeWithMargins, const QPoint &offset)