diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2016-06-14 10:37:59 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2016-06-30 19:15:44 +0000 |
commit | 4fffabbafe8e158783d98f595224bc38f0acbe86 (patch) | |
tree | 239f6d19c98e640b93a6c2b7f771034df65fed20 /src/input | |
parent | 9cf9f631f89f9de8c603606d11d47e72d10a6ee7 (diff) |
KeyboardDevice: do not store handles/ids of input devices
To avoid having cases where the id is valid but the node is not
yet created returning an invalid handle and breaking behavior.
Change-Id: I0f24eac89a62a9febe7dcac814cb91332ad0905b
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/input')
-rw-r--r-- | src/input/backend/assignkeyboardfocusjob.cpp | 5 | ||||
-rw-r--r-- | src/input/backend/keyboarddevice.cpp | 14 | ||||
-rw-r--r-- | src/input/backend/keyboarddevice_p.h | 6 | ||||
-rw-r--r-- | src/input/backend/keyboardhandler.cpp | 10 |
4 files changed, 3 insertions, 32 deletions
diff --git a/src/input/backend/assignkeyboardfocusjob.cpp b/src/input/backend/assignkeyboardfocusjob.cpp index ae46ce9e2..ae845beaf 100644 --- a/src/input/backend/assignkeyboardfocusjob.cpp +++ b/src/input/backend/assignkeyboardfocusjob.cpp @@ -65,10 +65,11 @@ void AssignKeyboardFocusJob::setInputHandler(InputHandler *handler) void AssignKeyboardFocusJob::run() { KeyboardDevice *keyboardDevice = m_inputHandler->keyboardDeviceManager()->lookupResource(m_keyboardDevice); - const auto handles = keyboardDevice->keyboardInputsHandles(); + const auto handles = m_inputHandler->keyboardInputManager()->activeHandles(); for (const HKeyboardHandler handle : handles) { KeyboardHandler *input = m_inputHandler->keyboardInputManager()->data(handle); - if (input) { + Q_ASSERT(input); + if (input->keyboardDevice() == m_keyboardDevice) { bool hasFocus = input->peerId() == keyboardDevice->lastKeyboardInputRequester(); input->setFocus(hasFocus); if (hasFocus) diff --git a/src/input/backend/keyboarddevice.cpp b/src/input/backend/keyboarddevice.cpp index 70e1f9615..2566dacd2 100644 --- a/src/input/backend/keyboarddevice.cpp +++ b/src/input/backend/keyboarddevice.cpp @@ -389,20 +389,6 @@ void KeyboardDevice::setInputHandler(InputHandler *handler) m_inputHandler = handler; } -void KeyboardDevice::addKeyboardInput(Qt3DCore::QNodeId input) -{ - if (!m_keyboardInputs.contains(input)) { - m_keyboardInputs.append(input); - m_keyboardInputHandles.append(m_inputHandler->keyboardInputManager()->lookupHandle(input)); - } -} - -void KeyboardDevice::removeKeyboardInput(Qt3DCore::QNodeId input) -{ - m_keyboardInputs.removeAll(input); - m_keyboardInputHandles.removeAll(m_inputHandler->keyboardInputManager()->lookupHandle(input)); -} - void KeyboardDevice::setCurrentFocusItem(Qt3DCore::QNodeId input) { m_currentFocusItem = input; diff --git a/src/input/backend/keyboarddevice_p.h b/src/input/backend/keyboarddevice_p.h index ef5bd059d..0ab7d22e8 100644 --- a/src/input/backend/keyboarddevice_p.h +++ b/src/input/backend/keyboarddevice_p.h @@ -75,9 +75,6 @@ public: void requestFocusForInput(Qt3DCore::QNodeId inputId); void setInputHandler(InputHandler *handler); - void addKeyboardInput(Qt3DCore::QNodeId input); - void removeKeyboardInput(Qt3DCore::QNodeId input); - void setCurrentFocusItem(Qt3DCore::QNodeId input); float axisValue(int axisIdentifier) const Q_DECL_OVERRIDE; @@ -87,8 +84,6 @@ public: inline Qt3DCore::QNodeId currentFocusItem() const { return m_currentFocusItem; } inline Qt3DCore::QNodeId lastKeyboardInputRequester() const { return m_lastRequester; } - inline QVector<Qt3DCore::QNodeId> keyboardInputs() const { return m_keyboardInputs; } - inline QVector<HKeyboardHandler> keyboardInputsHandles() const { return m_keyboardInputHandles; } protected: void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &) Q_DECL_OVERRIDE; @@ -98,7 +93,6 @@ private: InputHandler *m_inputHandler; QVector<Qt3DCore::QNodeId> m_keyboardInputs; - QVector<HKeyboardHandler> m_keyboardInputHandles; Qt3DCore::QNodeId m_lastRequester; Qt3DCore::QNodeId m_currentFocusItem; diff --git a/src/input/backend/keyboardhandler.cpp b/src/input/backend/keyboardhandler.cpp index d865fd92f..b96334e50 100644 --- a/src/input/backend/keyboardhandler.cpp +++ b/src/input/backend/keyboardhandler.cpp @@ -132,17 +132,7 @@ void KeyboardHandler::requestFocus() void KeyboardHandler::setSourcerDevice(QNodeId device) { - if (!m_keyboardDevice.isNull()) { - KeyboardDevice *device = m_inputHandler->keyboardDeviceManager()->lookupResource(m_keyboardDevice); - if (device) - device->removeKeyboardInput(peerId()); - } m_keyboardDevice = device; - if (!m_keyboardDevice.isNull()) { - KeyboardDevice *device = m_inputHandler->keyboardDeviceManager()->lookupResource(m_keyboardDevice); - if (device) - device->addKeyboardInput(peerId()); - } } KeyboardHandlerFunctor::KeyboardHandlerFunctor(InputHandler *handler) |