18#include <KConfigGroup>
19#include <KWayland/Client/surface.h>
21#include <linux/input.h>
25static const QString s_socketName = QStringLiteral(
"wayland_test_kwin_tabbox-0");
35 void testMoveForward();
36 void testMoveBackward();
40void TabBoxTest::initTestCase()
42 qRegisterMetaType<KWin::Window *>();
46 QRect(0, 0, 1280, 1024),
47 QRect(1280, 0, 1280, 1024),
50 KSharedConfigPtr c = KSharedConfig::openConfig(QString(), KConfig::SimpleConfig);
51 c->group(QStringLiteral(
"TabBox")).writeEntry(
"ShowTabBox",
false);
53 kwinApp()->setConfig(c);
54 qputenv(
"KWIN_XKB_DEFAULT_KEYMAP",
"1");
57 QVERIFY(applicationStartedSpy.wait());
60void TabBoxTest::init()
67void TabBoxTest::cleanup()
72void TabBoxTest::testCapsLock()
74#if !KWIN_BUILD_GLOBALSHORTCUTS
75 QSKIP(
"Can't test shortcuts without shortcuts");
87 QVERIFY(c1->isActive());
92 QVERIFY(c2->isActive());
97 QVERIFY(c3->isActive());
104 quint32 timestamp = 0;
107 QCOMPARE(
input()->keyboardModifiers(), Qt::NoModifier);
111 QCOMPARE(
input()->keyboardModifiers(), Qt::AltModifier);
115 QVERIFY(tabboxAddedSpy.wait());
116 QVERIFY(
workspace()->tabbox()->isGrabbed());
120 QCOMPARE(tabboxClosedSpy.count(), 1);
121 QCOMPARE(
workspace()->tabbox()->isGrabbed(),
false);
126 QCOMPARE(
input()->keyboardModifiers(), Qt::NoModifier);
127 QCOMPARE(tabboxClosedSpy.count(), 1);
128 QCOMPARE(
workspace()->tabbox()->isGrabbed(),
false);
129 QCOMPARE(
workspace()->activeWindow(), c2);
139void TabBoxTest::testMoveForward()
141#if !KWIN_BUILD_GLOBALSHORTCUTS
142 QSKIP(
"Can't test shortcuts without shortcuts");
153 QVERIFY(c1->isActive());
158 QVERIFY(c2->isActive());
163 QVERIFY(c3->isActive());
170 quint32 timestamp = 0;
172 QCOMPARE(
input()->keyboardModifiers(), Qt::AltModifier);
176 QVERIFY(tabboxAddedSpy.wait());
177 QVERIFY(
workspace()->tabbox()->isGrabbed());
181 QCOMPARE(tabboxClosedSpy.count(), 1);
182 QCOMPARE(
workspace()->tabbox()->isGrabbed(),
false);
183 QCOMPARE(
workspace()->activeWindow(), c2);
193void TabBoxTest::testMoveBackward()
195#if !KWIN_BUILD_GLOBALSHORTCUTS
196 QSKIP(
"Can't test shortcuts without shortcuts");
207 QVERIFY(c1->isActive());
212 QVERIFY(c2->isActive());
217 QVERIFY(c3->isActive());
224 quint32 timestamp = 0;
226 QCOMPARE(
input()->keyboardModifiers(), Qt::AltModifier);
228 QCOMPARE(
input()->keyboardModifiers(), Qt::AltModifier | Qt::ShiftModifier);
232 QVERIFY(tabboxAddedSpy.wait());
233 QVERIFY(
workspace()->tabbox()->isGrabbed());
237 QCOMPARE(tabboxClosedSpy.count(), 0);
239 QCOMPARE(tabboxClosedSpy.count(), 1);
240 QCOMPARE(
workspace()->tabbox()->isGrabbed(),
false);
241 QCOMPARE(
workspace()->activeWindow(), c1);
252#include "tabbox_test.moc"
void setActiveOutput(Output *output)
#define WAYLANDTEST_MAIN(TestObject)
Window * renderAndWaitForShown(KWayland::Client::Surface *surface, const QSize &size, const QColor &color, const QImage::Format &format=QImage::Format_ARGB32, int timeout=5000)
void keyboardKeyReleased(quint32 key, quint32 time)
void destroyWaylandConnection()
void setOutputConfig(const QList< QRect > &geometries)
void keyboardKeyPressed(quint32 key, quint32 time)
bool setupWaylandConnection(AdditionalWaylandInterfaces flags=AdditionalWaylandInterfaces())
std::unique_ptr< KWayland::Client::Surface > createSurface()
XdgToplevel * createXdgToplevelSurface(KWayland::Client::Surface *surface, QObject *parent=nullptr)
bool waitForWindowClosed(Window *window)
WaylandServer * waylandServer()
InputRedirection * input()