Client: Test for xdg surface window geometry

Change-Id: I2f336a81682317b1f7dc939d911906b4db60a386
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
This commit is contained in:
Pier Luigi Fiorini 2019-01-13 23:28:06 +01:00
parent a9c9f52620
commit 6c71a283d8
3 changed files with 30 additions and 0 deletions

View File

@ -86,6 +86,8 @@ XdgSurface::XdgSurface(XdgWmBase *xdgWmBase, Surface *surface, wl_client *client
connect(this, &XdgSurface::toplevelCreated, xdgWmBase, &XdgWmBase::toplevelCreated);
connect(surface, &Surface::attach, this, &XdgSurface::verifyConfigured);
connect(surface, &Surface::commit, this, [this] {
m_committed = m_pending;
if (m_ackedConfigureSerial != m_committedConfigureSerial) {
m_committedConfigureSerial = m_ackedConfigureSerial;
emit configureCommitted(m_committedConfigureSerial);
@ -133,6 +135,14 @@ void XdgSurface::xdg_surface_destroy_resource(Resource *resource)
delete this;
}
void XdgSurface::xdg_surface_set_window_geometry(Resource *resource, int32_t x, int32_t y, int32_t width, int32_t height)
{
Q_UNUSED(resource);
QRect rect(x, y, width, height);
QVERIFY(rect.isValid());
m_pending.windowGeometry = rect;
}
void XdgSurface::xdg_surface_ack_configure(Resource *resource, uint32_t serial)
{
Q_UNUSED(resource);

View File

@ -83,6 +83,9 @@ public:
QVector<uint> m_pendingConfigureSerials;
uint m_ackedConfigureSerial = 0;
uint m_committedConfigureSerial = 0;
struct DoubleBufferedState {
QRect windowGeometry = {0, 0, 0, 0};
} m_pending, m_committed;
public slots:
void verifyConfigured() { QVERIFY(m_configureSent); }
@ -96,6 +99,7 @@ protected:
void xdg_surface_get_popup(Resource *resource, uint32_t id, ::wl_resource *parent, ::wl_resource *positioner) override;
void xdg_surface_destroy_resource(Resource *resource) override;
void xdg_surface_destroy(Resource *resource) override { wl_resource_destroy(resource->handle); }
void xdg_surface_set_window_geometry(Resource *resource, int32_t x, int32_t y, int32_t width, int32_t height) override;
void xdg_surface_ack_configure(Resource *resource, uint32_t serial) override;
};

View File

@ -44,6 +44,7 @@ private slots:
void popup();
void pongs();
void minMaxSize();
void windowGeometry();
};
void tst_xdgshell::showMinimized()
@ -287,5 +288,20 @@ void tst_xdgshell::minMaxSize()
QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.minSize, QSize(50, 40));
}
void tst_xdgshell::windowGeometry()
{
QRasterWindow window;
window.resize(400, 320);
window.show();
QCOMPOSITOR_TRY_VERIFY(xdgToplevel());
exec([=] { xdgToplevel()->sendCompleteConfigure(); });
QCOMPOSITOR_TRY_COMPARE(xdgSurface()->m_committed.windowGeometry, QRect(QPoint(0, 0), window.frameGeometry().size()));
window.resize(800, 600);
QCOMPOSITOR_TRY_COMPARE(xdgSurface()->m_committed.windowGeometry, QRect(QPoint(0, 0), window.frameGeometry().size()));
}
QCOMPOSITOR_TEST_MAIN(tst_xdgshell)
#include "tst_xdgshell.moc"