summaryrefslogtreecommitdiffstats
path: root/src/input
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire.ecortex@kdab.com>2014-11-13 08:00:04 +0100
committerSean Harmer <sean.harmer@kdab.com>2014-11-14 20:30:03 +0100
commitf3e96f896aa8b46fc7a2cf830a9563e5d8306480 (patch)
treee90f3fbc9b15ae21fffe32da02ad69a0892b1568 /src/input
parentf7cfeb0cc5b7ee85b3768515ff6844a3e6204815 (diff)
InputHandler has a keyboardJob method
Returs a QVector of AspectJob to be performed for keyboard handling. Internally handles all the dependencies between jobs. Change-Id: Icfc2aa66dc716ffbadf341b77430bbbee3eb84c6 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/input')
-rw-r--r--src/input/inputhandler.cpp20
-rw-r--r--src/input/inputhandler_p.h3
-rw-r--r--src/input/qinputaspect.cpp4
3 files changed, 25 insertions, 2 deletions
diff --git a/src/input/inputhandler.cpp b/src/input/inputhandler.cpp
index 3a0daf2dc..d1f44aa8b 100644
--- a/src/input/inputhandler.cpp
+++ b/src/input/inputhandler.cpp
@@ -42,6 +42,7 @@
#include "inputhandler_p.h"
#include "inputmanagers_p.h"
#include "keyboardeventfilter_p.h"
+#include "assignkeyboardfocusjob_p.h"
#include <QWindow>
QT_BEGIN_NAMESPACE
@@ -103,6 +104,25 @@ void InputHandler::removeKeyboardController(HKeyboardController controller)
m_activeKeyboardControllers.removeAll(controller);
}
+// Return a vector of jobs to be performed for keyboard events
+// Handles all dependencies between jobs
+QVector<QAspectJobPtr> InputHandler::keyboardJobs() const
+{
+ // One job for Keyboard focus change event per Keyboard Controller
+ QVector<QAspectJobPtr> jobs;
+ Q_FOREACH (const HKeyboardController cHandle, m_activeKeyboardControllers) {
+ KeyboardController *controller = m_keyboardControllerManager->data(cHandle);
+ if (controller && controller->lastKeyboardInputRequester() != controller->currentFocusItem()) {
+ AssignKeyboardFocusJob *job = new AssignKeyboardFocusJob(controller->peerUuid());
+ job->setInputHandler(const_cast<InputHandler *>(this));
+ jobs.append(QAspectJobPtr(job));
+ }
+ }
+ // One job for Keyboard events (depends on the focus change job if there was one)
+ // TO DO
+ return jobs;
+}
+
} // Input
} // Qt3D
diff --git a/src/input/inputhandler_p.h b/src/input/inputhandler_p.h
index 9735bfa9d..d5208da5a 100644
--- a/src/input/inputhandler_p.h
+++ b/src/input/inputhandler_p.h
@@ -44,6 +44,7 @@
#include <Qt3DInput/qt3dinput_global.h>
#include <Qt3DInput/private/handle_types_p.h>
+#include <Qt3DCore/qaspectjob.h>
#include <QKeyEvent>
#include <QMutex>
@@ -77,6 +78,8 @@ public:
void appendKeyboardController(HKeyboardController controller);
void removeKeyboardController(HKeyboardController controller);
+ QVector<QAspectJobPtr> keyboardJobs() const;
+
private:
KeyboardControllerManager *m_keyboardControllerManager;
KeyboardInputManager *m_keyboardInputManager;
diff --git a/src/input/qinputaspect.cpp b/src/input/qinputaspect.cpp
index bf2e7e1ca..fc7645cb6 100644
--- a/src/input/qinputaspect.cpp
+++ b/src/input/qinputaspect.cpp
@@ -70,10 +70,10 @@ QInputAspect::QInputAspect(QObject *parent)
QVector<QAspectJobPtr> QInputAspect::jobsToExecute()
{
+ Q_D(QInputAspect);
QVector<QAspectJobPtr> jobs;
- // One job for Keyboard focus change event
- // One job for Keyboard events (depends on the focus change job if there was one)
+ jobs.append(d->m_inputHandler->keyboardJobs());
// One job for Mouse events
return jobs;