summaryrefslogtreecommitdiffstats
path: root/tests/auto/client/shared
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/client/shared')
-rw-r--r--tests/auto/client/shared/xdgshell.cpp17
-rw-r--r--tests/auto/client/shared/xdgshell.h12
2 files changed, 28 insertions, 1 deletions
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<uint> &states)
@@ -162,6 +163,22 @@ uint XdgToplevel::sendCompleteConfigure(const QSize &size, const QVector<uint> &
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<uint> &states = {});
uint sendCompleteConfigure(const QSize &size = {0, 0}, const QVector<uint> &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