summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Ottens <kevin.ottens@kdab.com>2016-10-06 19:45:17 +0200
committerSean Harmer <sean.harmer@kdab.com>2016-10-29 11:31:30 +0000
commit67fa5fb9e7ae7a762c1d829c31f0098ced0775b9 (patch)
tree300d0d9987b070fc9ca66b1afab2b1a8fef9fc35
parentacb2bad7fe2fed502cb41ec8f58dad8a035ef3fb (diff)
InputChords shouldn't process when disabled
Change-Id: I5d087edb422ed45d1a51d07b4e52aba084451a9b Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
-rw-r--r--src/input/backend/inputchord.cpp3
-rw-r--r--tests/auto/input/inputchord/tst_inputchord.cpp39
2 files changed, 42 insertions, 0 deletions
diff --git a/src/input/backend/inputchord.cpp b/src/input/backend/inputchord.cpp
index a37bb8ea4..ebcf79737 100644
--- a/src/input/backend/inputchord.cpp
+++ b/src/input/backend/inputchord.cpp
@@ -136,6 +136,9 @@ void InputChord::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
bool InputChord::process(InputHandler *inputHandler, qint64 currentTime)
{
+ if (!isEnabled())
+ return false;
+
const qint64 startTime = m_startTime;
bool triggered = false;
int activeInputs = 0;
diff --git a/tests/auto/input/inputchord/tst_inputchord.cpp b/tests/auto/input/inputchord/tst_inputchord.cpp
index a840d7dee..d3ad1c84a 100644
--- a/tests/auto/input/inputchord/tst_inputchord.cpp
+++ b/tests/auto/input/inputchord/tst_inputchord.cpp
@@ -164,6 +164,7 @@ private Q_SLOTS:
Qt3DInput::Input::InputChord backendInputChord;
Qt3DInput::QInputChord inputChord;
+ inputChord.setEnabled(true);
inputChord.setTimeout(300);
inputChord.addChord(firstInput);
inputChord.addChord(secondInput);
@@ -251,6 +252,7 @@ private Q_SLOTS:
Qt3DInput::Input::InputChord backendInputChord;
Qt3DInput::QInputChord inputChord;
+ inputChord.setEnabled(true);
inputChord.setTimeout(300);
inputChord.addChord(firstInput);
inputChord.addChord(secondInput);
@@ -274,6 +276,43 @@ private Q_SLOTS:
// THEN
QCOMPARE(backendInputChord.process(&handler, 1800000000), false);
}
+
+ void shouldNotProcessWhenDisabled()
+ {
+ // GIVEN
+ TestDeviceIntegration deviceIntegration;
+ TestDevice *device = deviceIntegration.createPhysicalDevice("keyboard");
+ TestDeviceBackendNode *deviceBackend = deviceIntegration.physicalDevice(device->id());
+ Qt3DInput::Input::InputHandler handler;
+ handler.addInputDeviceIntegration(&deviceIntegration);
+
+ auto firstInput = new Qt3DInput::QActionInput;
+ firstInput->setButtons(QVector<int>() << Qt::Key_Q);
+ firstInput->setSourceDevice(device);
+ auto backendFirstInput = handler.actionInputManager()->getOrCreateResource(firstInput->id());
+ simulateInitialization(firstInput, backendFirstInput);
+
+ auto secondInput = new Qt3DInput::QActionInput;
+ secondInput->setButtons(QVector<int>() << Qt::Key_W);
+ secondInput->setSourceDevice(device);
+ auto backendSecondInput = handler.actionInputManager()->getOrCreateResource(secondInput->id());
+ simulateInitialization(secondInput, backendSecondInput);
+
+ Qt3DInput::Input::InputChord backendInputChord;
+ Qt3DInput::QInputChord inputChord;
+ inputChord.setEnabled(false);
+ inputChord.setTimeout(300);
+ inputChord.addChord(firstInput);
+ inputChord.addChord(secondInput);
+ simulateInitialization(&inputChord, &backendInputChord);
+
+ // WHEN
+ deviceBackend->setButtonPressed(Qt::Key_Q, true);
+ deviceBackend->setButtonPressed(Qt::Key_W, true);
+
+ // THEN
+ QCOMPARE(backendInputChord.process(&handler, 1000000000), false);
+ }
};
QTEST_APPLESS_MAIN(tst_InputChord)