diff options
Diffstat (limited to 'src/input')
-rw-r--r-- | src/input/inputhandler.cpp | 9 | ||||
-rw-r--r-- | src/input/inputhandler_p.h | 2 |
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 |