8#include <QtGui/QGuiApplication>
9#include <QtGui/QTextCharFormat>
10#include <QtGui/QWindow>
11#include <QtCore/QVarLengthArray>
17#if QT_CONFIG(xkbcommon)
23Q_LOGGING_CATEGORY(qLcQpaInputMethods,
"qt.qpa.input.methods")
34#if QT_CONFIG(xkbcommon)
35 xkb_compose_state_unref(m_composeState);
36 xkb_compose_table_unref(m_composeTable);
42 return mDisplay->textInputManagerv2() !=
nullptr || mDisplay->textInputManagerv1() !=
nullptr || mDisplay->textInputManagerv3() !=
nullptr;
47 qCDebug(qLcQpaInputMethods) << Q_FUNC_INFO;
48#if QT_CONFIG(xkbcommon)
50 xkb_compose_state_reset(m_composeState);
53 QPlatformInputContext::reset();
64 qCDebug(qLcQpaInputMethods) << Q_FUNC_INFO;
75 if (!window || !window->handle())
78 auto *waylandWindow =
static_cast<QWaylandWindow *>(window->handle());
79 return waylandWindow->wlSurface();
84 qCDebug(qLcQpaInputMethods) << Q_FUNC_INFO << queries;
90 if ((m_focusObject != QGuiApplication::focusObject()) || !inputInterface)
102 if (action == QInputMethod::Click)
108 qCDebug(qLcQpaInputMethods) << Q_FUNC_INFO;
119 qCDebug(qLcQpaInputMethods) << Q_FUNC_INFO;
130 qCDebug(qLcQpaInputMethods) << Q_FUNC_INFO;
134 return QPlatformInputContext::isInputPanelVisible();
141 qCDebug(qLcQpaInputMethods) << Q_FUNC_INFO;
145 return QPlatformInputContext::keyboardRect();
147 return inputInterface->keyboardRect();
152 qCDebug(qLcQpaInputMethods) << Q_FUNC_INFO;
156 return QPlatformInputContext::locale();
158 return inputInterface->locale();
163 qCDebug(qLcQpaInputMethods) << Q_FUNC_INFO;
167 return QPlatformInputContext::inputDirection();
169 return inputInterface->inputDirection();
174 qCDebug(qLcQpaInputMethods) << Q_FUNC_INFO;
180 if (m_focusObject == object)
183 if (mCurrentWindow) {
184 if (
auto currentSurface = surfaceForWindow(mCurrentWindow))
186 mCurrentWindow.clear();
189 if (object && inputMethodAccepted()) {
190 mCurrentWindow = QGuiApplication::focusWindow();
191 if (
auto currentSurface = surfaceForWindow(mCurrentWindow)) {
196 m_focusObject = object;
201 return mDisplay->defaultInputDevice() ? mDisplay->defaultInputDevice()->textInput() :
nullptr;
204#if QT_CONFIG(xkbcommon)
291#include "moc_qwaylandinputcontext_p.cpp"
void hideInputPanel() override
Request to hide input panel.
QRectF keyboardRect() const override
This function can be reimplemented to return virtual keyboard rectangle in currently active window co...
void reset() override
Method to be called when input method needs to be reset.
~QWaylandInputContext() override
void showInputPanel() override
Request to show input panel.
Qt::LayoutDirection inputDirection() const override
void invokeAction(QInputMethod::Action, int cursorPosition) override
Called when the word currently being composed in the input item is tapped by the user.
void setFocusObject(QObject *object) override
This virtual method gets called to notify updated focus to object.
bool isValid() const override
Returns input context validity.
bool isInputPanelVisible() const override
Returns input panel visibility status.
void update(Qt::InputMethodQueries) override
Notification on editor updates.
QLocale locale() const override
virtual void enableSurface(::wl_surface *surface)=0
virtual bool isInputPanelVisible() const =0
virtual void hideInputPanel()
virtual void setCursorInsidePreedit(int cursor)=0
virtual void showInputPanel()
virtual void disableSurface(::wl_surface *surface)=0
Combined button and popup list for selecting options.
::wl_surface * surfaceForWindow(QWindow *window)