ButtonRebindsFilter: Add test for mouse button binding
This was missed when it was first implemented, but now there's tests for checking the mouse binding functionality in the buttons rebind plugin.
This commit is contained in:
parent
ac5c175ade
commit
47a538e61c
1 changed files with 45 additions and 1 deletions
|
@ -13,6 +13,7 @@
|
||||||
#include "workspace.h"
|
#include "workspace.h"
|
||||||
|
|
||||||
#include <KWayland/Client/keyboard.h>
|
#include <KWayland/Client/keyboard.h>
|
||||||
|
#include <KWayland/Client/pointer.h>
|
||||||
#include <KWayland/Client/seat.h>
|
#include <KWayland/Client/seat.h>
|
||||||
#include <linux/input-event-codes.h>
|
#include <linux/input-event-codes.h>
|
||||||
|
|
||||||
|
@ -32,6 +33,9 @@ private Q_SLOTS:
|
||||||
void testKey_data();
|
void testKey_data();
|
||||||
void testKey();
|
void testKey();
|
||||||
|
|
||||||
|
void testMouse_data();
|
||||||
|
void testMouse();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
quint32 timestamp = 1;
|
quint32 timestamp = 1;
|
||||||
};
|
};
|
||||||
|
@ -39,7 +43,7 @@ private:
|
||||||
void TestButtonRebind::init()
|
void TestButtonRebind::init()
|
||||||
{
|
{
|
||||||
QVERIFY(Test::setupWaylandConnection(Test::AdditionalWaylandInterface::Seat));
|
QVERIFY(Test::setupWaylandConnection(Test::AdditionalWaylandInterface::Seat));
|
||||||
QVERIFY(Test::waitForWaylandKeyboard());
|
QVERIFY(Test::waitForWaylandPointer());
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestButtonRebind::cleanup()
|
void TestButtonRebind::cleanup()
|
||||||
|
@ -104,5 +108,45 @@ void TestButtonRebind::testKey()
|
||||||
Test::pointerButtonReleased(0x119, timestamp++);
|
Test::pointerButtonReleased(0x119, timestamp++);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TestButtonRebind::testMouse_data()
|
||||||
|
{
|
||||||
|
QTest::addColumn<int>("mouseButton");
|
||||||
|
|
||||||
|
QTest::newRow("left button") << BTN_LEFT;
|
||||||
|
QTest::newRow("middle button") << BTN_MIDDLE;
|
||||||
|
QTest::newRow("right button") << BTN_RIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TestButtonRebind::testMouse()
|
||||||
|
{
|
||||||
|
KConfigGroup buttonGroup = KSharedConfig::openConfig(QStringLiteral("kcminputrc"))->group(QStringLiteral("ButtonRebinds")).group(QStringLiteral("Mouse"));
|
||||||
|
QFETCH(int, mouseButton);
|
||||||
|
buttonGroup.writeEntry("ExtraButton7", QStringList{"MouseButton", QString::number(mouseButton)}, KConfig::Notify);
|
||||||
|
buttonGroup.sync();
|
||||||
|
|
||||||
|
std::unique_ptr<KWayland::Client::Surface> surface = Test::createSurface();
|
||||||
|
std::unique_ptr<Test::XdgToplevel> shellSurface = Test::createXdgToplevelSurface(surface.get());
|
||||||
|
auto window = Test::renderAndWaitForShown(surface.get(), QSize(100, 50), Qt::blue);
|
||||||
|
|
||||||
|
std::unique_ptr<KWayland::Client::Pointer> pointer(Test::waylandSeat()->createPointer());
|
||||||
|
QSignalSpy enteredSpy(pointer.get(), &KWayland::Client::Pointer::entered);
|
||||||
|
QSignalSpy buttonChangedSpy(pointer.get(), &KWayland::Client::Pointer::buttonStateChanged);
|
||||||
|
|
||||||
|
const QRectF startGeometry = window->frameGeometry();
|
||||||
|
input()->pointer()->warp(startGeometry.center());
|
||||||
|
|
||||||
|
QVERIFY(enteredSpy.wait());
|
||||||
|
|
||||||
|
// 0x119 is Qt::ExtraButton7
|
||||||
|
Test::pointerButtonPressed(0x119, timestamp++);
|
||||||
|
|
||||||
|
QVERIFY(buttonChangedSpy.wait());
|
||||||
|
|
||||||
|
QCOMPARE(buttonChangedSpy.count(), 1);
|
||||||
|
QCOMPARE(buttonChangedSpy.at(0).at(2).value<qint32>(), mouseButton);
|
||||||
|
|
||||||
|
Test::pointerButtonReleased(0x119, timestamp++);
|
||||||
|
}
|
||||||
|
|
||||||
WAYLANDTEST_MAIN(TestButtonRebind)
|
WAYLANDTEST_MAIN(TestButtonRebind)
|
||||||
#include "buttonrebind_test.moc"
|
#include "buttonrebind_test.moc"
|
||||||
|
|
Loading…
Reference in a new issue