18#include <KPackage/PackageLoader>
19#include <KWayland/Client/surface.h>
21#include <linux/input.h>
26static const QString s_socketName = QStringLiteral(
"wayland_test_minimizeall-0");
27static const QString s_scriptName = QStringLiteral(
"minimizeall");
38 void testMinimizeUnminimize();
41void MinimizeAllScriptTest::initTestCase()
43 qputenv(
"XDG_DATA_DIRS", QCoreApplication::applicationDirPath().toUtf8());
45 qRegisterMetaType<Window *>();
50 QRect(0, 0, 1280, 1024),
51 QRect(1280, 0, 1280, 1024),
55 QVERIFY(applicationStartedSpy.wait());
57 QCOMPARE(outputs.count(), 2);
58 QCOMPARE(outputs[0]->geometry(), QRect(0, 0, 1280, 1024));
59 QCOMPARE(outputs[1]->geometry(), QRect(1280, 0, 1280, 1024));
62static QString locateMainScript(
const QString &pluginName)
64 const QList<KPluginMetaData> offers = KPackage::PackageLoader::self()->findPackages(
65 QStringLiteral(
"KWin/Script"),
66 QStringLiteral(
"kwin/scripts"),
67 [&](
const KPluginMetaData &metaData) {
68 return metaData.pluginId() == pluginName;
70 if (offers.isEmpty()) {
73 const QFileInfo metaDataFileInfo(offers.first().fileName());
74 return metaDataFileInfo.path() + QLatin1String(
"/contents/code/main.js");
77void MinimizeAllScriptTest::init()
88 QTRY_COMPARE(runningChangedSpy.count(), 1);
91void MinimizeAllScriptTest::cleanup()
99void MinimizeAllScriptTest::testMinimizeUnminimize()
101#if !KWIN_BUILD_GLOBALSHORTCUTS
102 QSKIP(
"Can't test shortcuts without shortcuts");
114 QVERIFY(window1->isActive());
115 QVERIFY(window1->isMinimizable());
121 QVERIFY(window2->isActive());
122 QVERIFY(window2->isMinimizable());
125 quint32 timestamp = 1;
133 QTRY_VERIFY(window1->isMinimized());
134 QTRY_VERIFY(window2->isMinimized());
144 QTRY_VERIFY(!window1->isMinimized());
145 QTRY_VERIFY(!window2->isMinimized());
148 shellSurface2.reset();
150 shellSurface1.reset();
157#include "minimizeall_test.moc"
void runningChanged(bool)
AbstractScript * findScript(const QString &pluginName) const
Q_SCRIPTABLE Q_INVOKABLE bool unloadScript(const QString &pluginName)
Q_SCRIPTABLE Q_INVOKABLE int loadScript(const QString &filePath, const QString &pluginName=QString())
static Scripting * self()
QList< Output * > outputs() const
#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()