diff options
Diffstat (limited to 'src/compositor/compositor_api/qwaylandinput.cpp')
-rw-r--r-- | src/compositor/compositor_api/qwaylandinput.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/compositor/compositor_api/qwaylandinput.cpp b/src/compositor/compositor_api/qwaylandinput.cpp index ed1a9c786..ad6cb2369 100644 --- a/src/compositor/compositor_api/qwaylandinput.cpp +++ b/src/compositor/compositor_api/qwaylandinput.cpp @@ -38,17 +38,18 @@ #include "qwaylandinput_p.h" #include "qwaylandcompositor.h" +#include "qwaylandinputmethodcontrol.h" #include "qwaylandview.h" #include <QtWaylandCompositor/QWaylandDrag> #include <QtWaylandCompositor/QWaylandTouch> #include <QtWaylandCompositor/QWaylandPointer> #include <QtWaylandCompositor/QWaylandWlShellSurface> -#include <QtWaylandCompositor/private/qwlinputmethod_p.h> #include <QtWaylandCompositor/private/qwaylandinput_p.h> #include <QtWaylandCompositor/private/qwaylandcompositor_p.h> #include <QtWaylandCompositor/private/qwldatadevice_p.h> #include "extensions/qwlqtkey_p.h" +#include "extensions/qwaylandtextinput.h" QT_BEGIN_NAMESPACE @@ -295,11 +296,21 @@ void QWaylandInputDevice::sendFullTouchEvent(QTouchEvent *event) void QWaylandInputDevice::sendFullKeyEvent(QKeyEvent *event) { Q_D(QWaylandInputDevice); + if (!keyboardFocus()) { qWarning("Cannot send key event, no keyboard focus, fix the compositor"); return; } + if (keyboardFocus()->inputMethodControl()->enabled() + && event->nativeScanCode() == 0) { + QWaylandTextInput *textInput = QWaylandTextInput::findIn(this); + if (textInput) { + textInput->sendKeyEvent(event); + return; + } + } + QtWayland::QtKeyExtensionGlobal *ext = QtWayland::QtKeyExtensionGlobal::findIn(d->compositor); if (ext && ext->postQtKeyEvent(event, keyboardFocus())) return; |