From b70148fde1d30add67ca6dd5ef63a37842f53f81 Mon Sep 17 00:00:00 2001 From: Johan Klokkhammer Helsing Date: Thu, 10 Jan 2019 15:12:07 +0100 Subject: Client: Test for xdg toplevel min and max size Change-Id: I60605f494eebfde9a7737911eefe69a93041ced5 Reviewed-by: Pier Luigi Fiorini --- tests/auto/client/shared/xdgshell.cpp | 17 +++++++++++++++++ tests/auto/client/shared/xdgshell.h | 12 +++++++++++- tests/auto/client/xdgshell/tst_xdgshell.cpp | 22 ++++++++++++++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) (limited to 'tests/auto/client') diff --git a/tests/auto/client/shared/xdgshell.cpp b/tests/auto/client/shared/xdgshell.cpp index ebbcc2942..4cabd3d87 100644 --- a/tests/auto/client/shared/xdgshell.cpp +++ b/tests/auto/client/shared/xdgshell.cpp @@ -149,6 +149,7 @@ XdgToplevel::XdgToplevel(XdgSurface *xdgSurface, int id, int version) : QtWaylandServer::xdg_toplevel(xdgSurface->resource()->client(), id, version) , m_xdgSurface(xdgSurface) { + connect(surface(), &Surface::commit, this, [this] { m_committed = m_pending; }); } void XdgToplevel::sendConfigure(const QSize &size, const QVector &states) @@ -162,6 +163,22 @@ uint XdgToplevel::sendCompleteConfigure(const QSize &size, const QVector & return m_xdgSurface->sendConfigure(); } +void XdgToplevel::xdg_toplevel_set_max_size(Resource *resource, int32_t width, int32_t height) +{ + Q_UNUSED(resource); + QSize size(width, height); + QVERIFY(size.isValid()); + m_pending.maxSize = size; +} + +void XdgToplevel::xdg_toplevel_set_min_size(Resource *resource, int32_t width, int32_t height) +{ + Q_UNUSED(resource); + QSize size(width, height); + QVERIFY(size.isValid()); + m_pending.minSize = size; +} + XdgPopup::XdgPopup(XdgSurface *xdgSurface, int id, int version) : QtWaylandServer::xdg_popup(xdgSurface->resource()->client(), id, version) , m_xdgSurface(xdgSurface) diff --git a/tests/auto/client/shared/xdgshell.h b/tests/auto/client/shared/xdgshell.h index 3fcec7983..037de20d1 100644 --- a/tests/auto/client/shared/xdgshell.h +++ b/tests/auto/client/shared/xdgshell.h @@ -99,14 +99,24 @@ protected: void xdg_surface_ack_configure(Resource *resource, uint32_t serial) override; }; -class XdgToplevel : public QtWaylandServer::xdg_toplevel +class XdgToplevel : public QObject, public QtWaylandServer::xdg_toplevel { + Q_OBJECT public: explicit XdgToplevel(XdgSurface *xdgSurface, int id, int version = 1); void sendConfigure(const QSize &size = {0, 0}, const QVector &states = {}); uint sendCompleteConfigure(const QSize &size = {0, 0}, const QVector &states = {}); Surface *surface() { return m_xdgSurface->m_surface; } + XdgSurface *m_xdgSurface = nullptr; + struct DoubleBufferedState { + QSize minSize = {0, 0}; + QSize maxSize = {0, 0}; + } m_pending, m_committed; + +protected: + void xdg_toplevel_set_max_size(Resource *resource, int32_t width, int32_t height) override; + void xdg_toplevel_set_min_size(Resource *resource, int32_t width, int32_t height) override; }; class XdgPopup : public QtWaylandServer::xdg_popup diff --git a/tests/auto/client/xdgshell/tst_xdgshell.cpp b/tests/auto/client/xdgshell/tst_xdgshell.cpp index 55e994b06..1bfabe55f 100644 --- a/tests/auto/client/xdgshell/tst_xdgshell.cpp +++ b/tests/auto/client/xdgshell/tst_xdgshell.cpp @@ -43,6 +43,7 @@ private slots: void configureStates(); void popup(); void pongs(); + void minMaxSize(); }; void tst_xdgshell::showMinimized() @@ -265,5 +266,26 @@ void tst_xdgshell::pongs() QCOMPARE(pongSpy.first().at(0).toUInt(), serial); } +void tst_xdgshell::minMaxSize() +{ + QRasterWindow window; + window.setMinimumSize(QSize(100, 100)); + window.setMaximumSize(QSize(1000, 1000)); + window.resize(400, 320); + window.show(); + QCOMPOSITOR_TRY_VERIFY(xdgToplevel()); + + exec([=] { xdgToplevel()->sendCompleteConfigure(); }); + + QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.minSize, QSize(100, 100)); + QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.maxSize, QSize(1000, 1000)); + + window.setMaximumSize(QSize(500, 400)); + QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.maxSize, QSize(500, 400)); + + window.setMinimumSize(QSize(50, 40)); + QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.minSize, QSize(50, 40)); +} + QCOMPOSITOR_TEST_MAIN(tst_xdgshell) #include "tst_xdgshell.moc" -- cgit v1.2.3