diff options
author | Paul Lemire <paul.lemire.ecortex@kdab.com> | 2014-11-13 08:00:04 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2014-11-14 20:30:03 +0100 |
commit | f3e96f896aa8b46fc7a2cf830a9563e5d8306480 (patch) | |
tree | e90f3fbc9b15ae21fffe32da02ad69a0892b1568 /src/input | |
parent | f7cfeb0cc5b7ee85b3768515ff6844a3e6204815 (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.cpp | 20 | ||||
-rw-r--r-- | src/input/inputhandler_p.h | 3 | ||||
-rw-r--r-- | src/input/qinputaspect.cpp | 4 |
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; |