summaryrefslogtreecommitdiffstats
path: root/src/input
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2016-06-14 10:37:59 +0200
committerPaul Lemire <paul.lemire@kdab.com>2016-06-30 19:15:44 +0000
commit4fffabbafe8e158783d98f595224bc38f0acbe86 (patch)
tree239f6d19c98e640b93a6c2b7f771034df65fed20 /src/input
parent9cf9f631f89f9de8c603606d11d47e72d10a6ee7 (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.cpp5
-rw-r--r--src/input/backend/keyboarddevice.cpp14
-rw-r--r--src/input/backend/keyboarddevice_p.h6
-rw-r--r--src/input/backend/keyboardhandler.cpp10
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)