Client: Add tests for xdg-shell v6 window geometry
Change-Id: Ifb7a1d63a136349cd99d516e63732b4393967468 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
This commit is contained in:
parent
90336adc17
commit
2c9bb12fe3
@ -189,6 +189,7 @@ signals:
|
|||||||
uint unsetMaximizedRequested();
|
uint unsetMaximizedRequested();
|
||||||
uint setFullscreenRequested();
|
uint setFullscreenRequested();
|
||||||
uint unsetFullscreenRequested();
|
uint unsetFullscreenRequested();
|
||||||
|
void windowGeometryRequested(QRect geometry); // NOTE: This is really an xdg surface event
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MockXdgToplevelV6(Impl::XdgToplevelV6 *toplevel) : m_toplevel(toplevel) {}
|
MockXdgToplevelV6(Impl::XdgToplevelV6 *toplevel) : m_toplevel(toplevel) {}
|
||||||
|
@ -57,6 +57,14 @@ void XdgSurfaceV6::zxdg_surface_v6_get_toplevel(QtWaylandServer::zxdg_surface_v6
|
|||||||
m_toplevel = new XdgToplevelV6(this, resource->client(), id, version);
|
m_toplevel = new XdgToplevelV6(this, resource->client(), id, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void XdgSurfaceV6::zxdg_surface_v6_set_window_geometry(QtWaylandServer::zxdg_surface_v6::Resource *resource, int32_t x, int32_t y, int32_t width, int32_t height)
|
||||||
|
{
|
||||||
|
if (m_toplevel) {
|
||||||
|
QRect geometry(x, y, width, height);
|
||||||
|
emit m_toplevel->mockToplevel()->windowGeometryRequested(geometry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void XdgSurfaceV6::zxdg_surface_v6_destroy(QtWaylandServer::zxdg_surface_v6::Resource *resource)
|
void XdgSurfaceV6::zxdg_surface_v6_destroy(QtWaylandServer::zxdg_surface_v6::Resource *resource)
|
||||||
{
|
{
|
||||||
Q_ASSERT(!m_toplevel);
|
Q_ASSERT(!m_toplevel);
|
||||||
|
@ -52,6 +52,7 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
void zxdg_surface_v6_destroy_resource(Resource *) override { delete this; }
|
void zxdg_surface_v6_destroy_resource(Resource *) override { delete this; }
|
||||||
void zxdg_surface_v6_get_toplevel(Resource *resource, uint32_t id) override;
|
void zxdg_surface_v6_get_toplevel(Resource *resource, uint32_t id) override;
|
||||||
|
void zxdg_surface_v6_set_window_geometry(Resource *resource, int32_t x, int32_t y, int32_t width, int32_t height) override;
|
||||||
void zxdg_surface_v6_destroy(Resource *resource) override;
|
void zxdg_surface_v6_destroy(Resource *resource) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -99,6 +99,8 @@ private slots:
|
|||||||
void unsetMaximized();
|
void unsetMaximized();
|
||||||
void focusWindowFollowsConfigure();
|
void focusWindowFollowsConfigure();
|
||||||
void windowStateChangedEvents();
|
void windowStateChangedEvents();
|
||||||
|
void windowGeometrySimple();
|
||||||
|
void windowGeometryFixed();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MockCompositor *m_compositor = nullptr;
|
MockCompositor *m_compositor = nullptr;
|
||||||
@ -317,6 +319,47 @@ void tst_WaylandClientXdgShellV6::windowStateChangedEvents()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tst_WaylandClientXdgShellV6::windowGeometrySimple()
|
||||||
|
{
|
||||||
|
QWindow window;
|
||||||
|
window.show();
|
||||||
|
|
||||||
|
QSharedPointer<MockXdgToplevelV6> toplevel;
|
||||||
|
QTRY_VERIFY(toplevel = m_compositor->xdgToplevelV6());
|
||||||
|
QSignalSpy geometrySpy(toplevel.data(), SIGNAL(windowGeometryRequested(QRect)));
|
||||||
|
|
||||||
|
m_compositor->sendXdgToplevelV6Configure(toplevel);
|
||||||
|
QTRY_COMPARE(geometrySpy.count(), 1);
|
||||||
|
QCOMPARE(geometrySpy.takeFirst().at(0).toRect().size(), window.frameGeometry().size());
|
||||||
|
|
||||||
|
m_compositor->sendXdgToplevelV6Configure(toplevel, QSize(123, 456));
|
||||||
|
QTRY_COMPARE(geometrySpy.count(), 1);
|
||||||
|
QCOMPARE(geometrySpy.takeFirst().at(0).toRect().size(), QSize(123, 456));
|
||||||
|
}
|
||||||
|
|
||||||
|
void tst_WaylandClientXdgShellV6::windowGeometryFixed()
|
||||||
|
{
|
||||||
|
QWindow window;
|
||||||
|
window.resize(QSize(1337, 137));
|
||||||
|
window.setMaximumSize(window.size());
|
||||||
|
window.setMinimumSize(window.size());
|
||||||
|
window.show();
|
||||||
|
|
||||||
|
QSharedPointer<MockXdgToplevelV6> toplevel;
|
||||||
|
QTRY_VERIFY(toplevel = m_compositor->xdgToplevelV6());
|
||||||
|
QSignalSpy geometrySpy(toplevel.data(), SIGNAL(windowGeometryRequested(QRect)));
|
||||||
|
|
||||||
|
m_compositor->sendXdgToplevelV6Configure(toplevel);
|
||||||
|
QTRY_COMPARE(geometrySpy.count(), 1);
|
||||||
|
QRect initialWindowGeometry = geometrySpy.takeFirst().at(0).toRect();
|
||||||
|
QCOMPARE(initialWindowGeometry.size(), window.frameGeometry().size());
|
||||||
|
|
||||||
|
m_compositor->sendXdgToplevelV6Configure(toplevel, QSize(123, 456));
|
||||||
|
QTRY_COMPARE(geometrySpy.count(), 1);
|
||||||
|
// Configuring the window should not change the window geometry
|
||||||
|
QCOMPARE(geometrySpy.takeFirst().at(0).toRect().size(), initialWindowGeometry.size());
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
setenv("XDG_RUNTIME_DIR", ".", 1);
|
setenv("XDG_RUNTIME_DIR", ".", 1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user