diff options
author | Kevin Ottens <kevin.ottens@kdab.com> | 2015-01-20 15:53:29 +0100 |
---|---|---|
committer | Kevin Ottens <kevin.ottens@kdab.com> | 2015-01-23 07:51:37 +0100 |
commit | 66475d12dd8944ac67c087bc1dbb76dd75a3d686 (patch) | |
tree | 6ccc8597aff0552d4b8da401503754ff50b9968e | |
parent | a452e142ee25d60e4c7ae646da8596c95cbaf564 (diff) |
The input aspect don't need QWindow anymore
This aspect doesn't need to depend on a QWindow, any QObject can do as
long as we can have an event filter on it and we see input events on it.
Rename the whole concept to "view" in the process.
Change-Id: Idce2fcc37c5679fe0f7915d27793685167dd59a6
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
29 files changed, 46 insertions, 50 deletions
diff --git a/examples/assimp/main.cpp b/examples/assimp/main.cpp index cc5079435..dc0bd455a 100644 --- a/examples/assimp/main.cpp +++ b/examples/assimp/main.cpp @@ -62,7 +62,7 @@ int main(int argc, char* argv[]) engine.aspectEngine()->registerAspect(new Qt3D::QInputAspect()); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.aspectEngine()->setData(data); engine.aspectEngine()->initialize(); engine.setSource(QUrl("qrc:/main.qml")); diff --git a/examples/bigmodel-qml/main.cpp b/examples/bigmodel-qml/main.cpp index 629ebf34f..c51ac1c7d 100644 --- a/examples/bigmodel-qml/main.cpp +++ b/examples/bigmodel-qml/main.cpp @@ -71,7 +71,7 @@ int main(int argc, char* argv[]) engine.qmlEngine()->rootContext()->setContextProperty("_meshFileNames", meshFileNames); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.aspectEngine()->setData(data); engine.aspectEngine()->initialize(); engine.setSource(QUrl("qrc:/main.qml")); diff --git a/examples/bigscene-cpp/main.cpp b/examples/bigscene-cpp/main.cpp index e90a10b15..2d02eb4a6 100644 --- a/examples/bigscene-cpp/main.cpp +++ b/examples/bigscene-cpp/main.cpp @@ -75,7 +75,7 @@ int main(int ac, char **av) engine.initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.setData(data); QEntity *root = new QEntity(); diff --git a/examples/cpp_example/main.cpp b/examples/cpp_example/main.cpp index 197b101ec..228b9c815 100644 --- a/examples/cpp_example/main.cpp +++ b/examples/cpp_example/main.cpp @@ -88,7 +88,7 @@ int main(int ac, char **av) engine.initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.setData(data); // Root entity diff --git a/examples/cylinder-cpp/main.cpp b/examples/cylinder-cpp/main.cpp index 2eaf4931d..888d9d86e 100644 --- a/examples/cylinder-cpp/main.cpp +++ b/examples/cylinder-cpp/main.cpp @@ -78,7 +78,7 @@ int main(int argc, char **argv) engine.initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.setData(data); // Root entity diff --git a/examples/cylinder-qml/main.cpp b/examples/cylinder-qml/main.cpp index 6cd8b1d13..533bba95e 100644 --- a/examples/cylinder-qml/main.cpp +++ b/examples/cylinder-qml/main.cpp @@ -59,7 +59,7 @@ int main(int argc, char* argv[]) QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.aspectEngine()->setData(data); engine.aspectEngine()->initialize(); engine.setSource(QUrl("qrc:/main.qml")); diff --git a/examples/deferred-renderer-cpp/main.cpp b/examples/deferred-renderer-cpp/main.cpp index 62732d25b..457d24792 100644 --- a/examples/deferred-renderer-cpp/main.cpp +++ b/examples/deferred-renderer-cpp/main.cpp @@ -80,7 +80,7 @@ int main(int ac, char **av) engine.initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.setData(data); // Root entity diff --git a/examples/deferred-renderer-qml/main.cpp b/examples/deferred-renderer-qml/main.cpp index 6a8f9717c..2ad7918bc 100644 --- a/examples/deferred-renderer-qml/main.cpp +++ b/examples/deferred-renderer-qml/main.cpp @@ -64,7 +64,7 @@ int main(int argc, char* argv[]) engine.aspectEngine()->initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.aspectEngine()->setData(data); engine.setSource(QUrl("qrc:/main.qml")); view.show(); diff --git a/examples/dynamicscene-cpp/main.cpp b/examples/dynamicscene-cpp/main.cpp index aee718524..7e2b6113a 100644 --- a/examples/dynamicscene-cpp/main.cpp +++ b/examples/dynamicscene-cpp/main.cpp @@ -66,7 +66,7 @@ int main(int argc, char* argv[]) engine.initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.setData(data); ExampleScene *sceneRoot = new ExampleScene(); diff --git a/examples/gltf/main.cpp b/examples/gltf/main.cpp index 7a03a7c59..149e23477 100644 --- a/examples/gltf/main.cpp +++ b/examples/gltf/main.cpp @@ -62,7 +62,7 @@ int main(int argc, char* argv[]) QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.aspectEngine()->setData(data); engine.aspectEngine()->initialize(); diff --git a/examples/keyboardinput-qml/main.cpp b/examples/keyboardinput-qml/main.cpp index bd4880e5f..e4f5e7fbf 100644 --- a/examples/keyboardinput-qml/main.cpp +++ b/examples/keyboardinput-qml/main.cpp @@ -58,7 +58,7 @@ int main(int argc, char* argv[]) engine.aspectEngine()->initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.aspectEngine()->setData(data); engine.setSource(QUrl("qrc:/main.qml")); diff --git a/examples/loader-qml/main.cpp b/examples/loader-qml/main.cpp index a8fef8756..7ab3d72fd 100644 --- a/examples/loader-qml/main.cpp +++ b/examples/loader-qml/main.cpp @@ -58,7 +58,7 @@ int main(int argc, char* argv[]) engine.aspectEngine()->initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.aspectEngine()->setData(data); engine.setSource(QUrl("qrc:/main.qml")); diff --git a/examples/materials-cpp/main.cpp b/examples/materials-cpp/main.cpp index 3a84c33f7..c7ae96d76 100644 --- a/examples/materials-cpp/main.cpp +++ b/examples/materials-cpp/main.cpp @@ -73,7 +73,7 @@ int main(int argc, char* argv[]) engine.initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.setData(data); // Scene Root diff --git a/examples/materials/main.cpp b/examples/materials/main.cpp index de7c0167b..97179324c 100644 --- a/examples/materials/main.cpp +++ b/examples/materials/main.cpp @@ -63,7 +63,7 @@ int main(int argc, char* argv[]) engine.aspectEngine()->initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.aspectEngine()->setData(data); // Expose the window as a context property so we can set the aspect ratio diff --git a/examples/multiviewport/main.cpp b/examples/multiviewport/main.cpp index 9787a77f0..9f4581069 100644 --- a/examples/multiviewport/main.cpp +++ b/examples/multiviewport/main.cpp @@ -59,7 +59,7 @@ int main(int ac, char **av) engine.aspectEngine()->registerAspect(new Qt3D::QInputAspect()); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.aspectEngine()->setData(data); engine.aspectEngine()->initialize(); engine.setSource(QUrl("qrc:/main.qml")); diff --git a/examples/playground-qml/main.cpp b/examples/playground-qml/main.cpp index ddf02e89e..88ee27041 100644 --- a/examples/playground-qml/main.cpp +++ b/examples/playground-qml/main.cpp @@ -62,7 +62,7 @@ int main(int argc, char* argv[]) engine.aspectEngine()->registerAspect(new Qt3D::QInputAspect()); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.aspectEngine()->setData(data); engine.aspectEngine()->initialize(); engine.setSource(QUrl("qrc:/main.qml")); diff --git a/examples/rollerball/main.cpp b/examples/rollerball/main.cpp index a5ad91ea4..6494ce7fc 100644 --- a/examples/rollerball/main.cpp +++ b/examples/rollerball/main.cpp @@ -64,7 +64,7 @@ int main(int argc, char* argv[]) engine.aspectEngine()->registerAspect(new Qt3D::BulletPhysicsAspect()); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.aspectEngine()->setData(data); engine.aspectEngine()->initialize(); diff --git a/examples/shadow-map-qml/main.cpp b/examples/shadow-map-qml/main.cpp index b3b6af159..ce4cadd5b 100644 --- a/examples/shadow-map-qml/main.cpp +++ b/examples/shadow-map-qml/main.cpp @@ -65,7 +65,7 @@ int main(int argc, char* argv[]) engine.aspectEngine()->initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.aspectEngine()->setData(data); engine.qmlEngine()->rootContext()->setContextProperty("_window", &view); engine.setSource(QUrl("qrc:/main.qml")); diff --git a/examples/simple-cpp/main.cpp b/examples/simple-cpp/main.cpp index 4f1fab7fc..800545601 100644 --- a/examples/simple-cpp/main.cpp +++ b/examples/simple-cpp/main.cpp @@ -77,7 +77,7 @@ int main(int argc, char* argv[]) engine.initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.setData(data); // Root entity diff --git a/examples/simple-qml/main.cpp b/examples/simple-qml/main.cpp index a8fef8756..7ab3d72fd 100644 --- a/examples/simple-qml/main.cpp +++ b/examples/simple-qml/main.cpp @@ -58,7 +58,7 @@ int main(int argc, char* argv[]) engine.aspectEngine()->initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.aspectEngine()->setData(data); engine.setSource(QUrl("qrc:/main.qml")); diff --git a/examples/tessellation-modes/main.cpp b/examples/tessellation-modes/main.cpp index 1191a9b76..1aabca71e 100644 --- a/examples/tessellation-modes/main.cpp +++ b/examples/tessellation-modes/main.cpp @@ -65,7 +65,7 @@ int main(int argc, char* argv[]) QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.aspectEngine()->setData(data); engine.aspectEngine()->initialize(); // Register our custom types diff --git a/examples/torus-cpp/main.cpp b/examples/torus-cpp/main.cpp index 4ca4a3df8..aab3bd165 100644 --- a/examples/torus-cpp/main.cpp +++ b/examples/torus-cpp/main.cpp @@ -79,7 +79,7 @@ int main(int argc, char **argv) engine.initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.setData(data); // Root entity diff --git a/examples/torus-qml/main.cpp b/examples/torus-qml/main.cpp index 7177e0783..33953c40f 100644 --- a/examples/torus-qml/main.cpp +++ b/examples/torus-qml/main.cpp @@ -58,7 +58,7 @@ int main(int argc, char* argv[]) engine.aspectEngine()->registerAspect(new Qt3D::QInputAspect()); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.aspectEngine()->setData(data); engine.aspectEngine()->initialize(); engine.setSource(QUrl("qrc:/main.qml")); diff --git a/examples/wave/main.cpp b/examples/wave/main.cpp index e34f9e148..e6e2eaf03 100644 --- a/examples/wave/main.cpp +++ b/examples/wave/main.cpp @@ -65,7 +65,7 @@ int main(int argc, char* argv[]) engine.qmlEngine()->rootContext()->setContextProperty("_window", &view); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.aspectEngine()->setData(data); engine.aspectEngine()->initialize(); engine.setSource(QUrl("qrc:/main.qml")); diff --git a/examples/wireframe/main.cpp b/examples/wireframe/main.cpp index 6939f8f59..12513d174 100644 --- a/examples/wireframe/main.cpp +++ b/examples/wireframe/main.cpp @@ -65,7 +65,7 @@ int main(int argc, char* argv[]) engine.qmlEngine()->rootContext()->setContextProperty("_window", &view); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); - data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); + data.insert(QStringLiteral("eventSource"), QVariant::fromValue(&view)); engine.aspectEngine()->setData(data); engine.aspectEngine()->initialize(); engine.setSource(QUrl("qrc:/main.qml")); diff --git a/src/input/inputhandler.cpp b/src/input/inputhandler.cpp index 972519e72..6a23a94be 100644 --- a/src/input/inputhandler.cpp +++ b/src/input/inputhandler.cpp @@ -44,7 +44,6 @@ #include "keyboardeventfilter_p.h" #include "assignkeyboardfocusjob_p.h" #include "keyeventdispatcherjob_p.h" -#include <QWindow> QT_BEGIN_NAMESPACE @@ -55,22 +54,22 @@ namespace Input { InputHandler::InputHandler() : m_keyboardControllerManager(new KeyboardControllerManager()) , m_keyboardInputManager(new KeyboardInputManager()) - , m_window(Q_NULLPTR) + , m_eventSource(Q_NULLPTR) , m_keyboardEventFilter(new KeyboardEventFilter()) { m_keyboardEventFilter->setInputHandler(this); } // Called in MainThread -void InputHandler::setWindow(QWindow *window) +void InputHandler::setEventSource(QObject *object) { - if (window != m_window) { - if (m_window) - m_window->removeEventFilter(m_keyboardEventFilter); + if (object != m_eventSource) { + if (m_eventSource) + m_eventSource->removeEventFilter(m_keyboardEventFilter); clearPendingKeyEvents(); - m_window = window; - if (m_window) - m_window->installEventFilter(m_keyboardEventFilter); + m_eventSource = object; + if (m_eventSource) + m_eventSource->installEventFilter(m_keyboardEventFilter); } } diff --git a/src/input/inputhandler_p.h b/src/input/inputhandler_p.h index e54a492d5..1cd58c5ad 100644 --- a/src/input/inputhandler_p.h +++ b/src/input/inputhandler_p.h @@ -50,8 +50,6 @@ QT_BEGIN_NAMESPACE -class QWindow; - namespace Qt3D { namespace Input { @@ -65,8 +63,8 @@ class InputHandler public: InputHandler(); - void setWindow(QWindow *window); - inline QWindow *window() const { return m_window; } + void setEventSource(QObject *object); + inline QObject *eventSource() const { return m_eventSource; } inline KeyboardControllerManager *keyboardControllerManager() const { return m_keyboardControllerManager; } inline KeyboardInputManager *keyboardInputManager() const { return m_keyboardInputManager; } @@ -84,7 +82,7 @@ private: KeyboardControllerManager *m_keyboardControllerManager; KeyboardInputManager *m_keyboardInputManager; QVector<HKeyboardController> m_activeKeyboardControllers; - QWindow *m_window; + QObject *m_eventSource; KeyboardEventFilter *m_keyboardEventFilter; QList<QKeyEvent> m_pendingEvents; mutable QMutex m_mutex; diff --git a/src/input/keyboardeventfilter.cpp b/src/input/keyboardeventfilter.cpp index f81fd05f6..609423f52 100644 --- a/src/input/keyboardeventfilter.cpp +++ b/src/input/keyboardeventfilter.cpp @@ -50,7 +50,7 @@ namespace Qt3D { namespace Input { -// The KeyboardEventFilter must be in the same thread as the QWindow it will be monitoring +// The KeyboardEventFilter must be in the same thread as the view it will be monitoring KeyboardEventFilter::KeyboardEventFilter(QObject *parent) : QObject(parent) @@ -62,7 +62,7 @@ void KeyboardEventFilter::setInputHandler(InputHandler *handler) m_inputHandler = handler; } -// Triggered in QWindow thread (usually the main thread) +// Triggered in the view thread (usually the main thread) bool KeyboardEventFilter::eventFilter(QObject *obj, QEvent *e) { if (e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease) { diff --git a/src/input/qinputaspect.cpp b/src/input/qinputaspect.cpp index 6068acf79..a4787f6d8 100644 --- a/src/input/qinputaspect.cpp +++ b/src/input/qinputaspect.cpp @@ -49,7 +49,6 @@ #include <Qt3DCore/qscenepropertychange.h> #include <Qt3DInput/qkeyboardcontroller.h> #include <Qt3DInput/qkeyboardinput.h> -#include <QWindow> QT_BEGIN_NAMESPACE @@ -119,21 +118,21 @@ void QInputAspect::setRootEntity(QEntity *rootObject) void QInputAspect::onInitialize(const QVariantMap &data) { - QWindow *w = Q_NULLPTR; - const QVariant &v = data.value(QStringLiteral("window")); + QObject *object = Q_NULLPTR; + const QVariant &v = data.value(QStringLiteral("eventSource")); if (v.isValid()) - w = v.value<QWindow *>(); + object = v.value<QObject *>(); Q_D(QInputAspect); - if (w) - w->installEventFilter(d->m_cameraController); - d->m_inputHandler->setWindow(w); + if (object) + object->installEventFilter(d->m_cameraController); + d->m_inputHandler->setEventSource(object); } void QInputAspect::onCleanup() { Q_D(QInputAspect); - d->m_inputHandler->window()->removeEventFilter(d->m_cameraController); - d->m_inputHandler->setWindow(Q_NULLPTR); + d->m_inputHandler->eventSource()->removeEventFilter(d->m_cameraController); + d->m_inputHandler->setEventSource(Q_NULLPTR); } void QInputAspect::visitNode(QNode *node) |