summaryrefslogtreecommitdiffstats
path: root/src/compositor/compositor_api/qwaylandinput.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/compositor/compositor_api/qwaylandinput.cpp')
-rw-r--r--src/compositor/compositor_api/qwaylandinput.cpp13
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;