summaryrefslogtreecommitdiffstats
path: root/src/input
diff options
context:
space:
mode:
Diffstat (limited to 'src/input')
-rw-r--r--src/input/inputhandler.cpp9
-rw-r--r--src/input/inputhandler_p.h2
2 files changed, 11 insertions, 0 deletions
diff --git a/src/input/inputhandler.cpp b/src/input/inputhandler.cpp
index 47a8705fa..28299e357 100644
--- a/src/input/inputhandler.cpp
+++ b/src/input/inputhandler.cpp
@@ -41,6 +41,8 @@
#include "inputhandler_p.h"
#include "inputmanagers_p.h"
+#include "keyboardeventfilter_p.h"
+#include <QWindow>
QT_BEGIN_NAMESPACE
@@ -52,13 +54,20 @@ InputHandler::InputHandler()
: m_keyboardControllerManager(new KeyboardControllerManager())
, m_keyboardInputManager(new KeyboardInputManager())
, m_window(Q_NULLPTR)
+ , m_keyboardEventFilter(new KeyboardEventFilter())
{
+ m_keyboardEventFilter->setInputHandler(this);
}
+// Called in MainThread
void InputHandler::setWindow(QWindow *window)
{
if (window != m_window) {
+ if (m_window)
+ m_window->removeEventFilter(m_keyboardEventFilter);
m_window = window;
+ if (m_window)
+ m_window->installEventFilter(m_keyboardEventFilter);
}
}
diff --git a/src/input/inputhandler_p.h b/src/input/inputhandler_p.h
index 186c140bc..4f7cb02e1 100644
--- a/src/input/inputhandler_p.h
+++ b/src/input/inputhandler_p.h
@@ -54,6 +54,7 @@ namespace Input {
class KeyboardInputManager;
class KeyboardControllerManager;
+class KeyboardEventFilter;
class InputHandler
{
@@ -70,6 +71,7 @@ private:
KeyboardControllerManager *m_keyboardControllerManager;
KeyboardInputManager *m_keyboardInputManager;
QWindow *m_window;
+ KeyboardEventFilter *m_keyboardEventFilter;
};
} // Input