47QPlatformInputContext::QPlatformInputContext()
48 : QObject(*(
new QPlatformInputContextPrivate))
52 QMetaObject::invokeMethod(
this, [
this]{
53 m_inputDirection = inputDirection();
54 }, Qt::QueuedConnection);
254void QPlatformInputContext::setSelectionOnFocusObject(
const QPointF &nativeAnchorPos,
const QPointF &nativeCursorPos)
256 QObject *focus =
qApp->focusObject();
260 QWindow *window =
qApp->focusWindow();
261 const QPointF &anchorPos = QHighDpi::fromNativePixels(nativeAnchorPos, window);
262 const QPointF &cursorPos = QHighDpi::fromNativePixels(nativeCursorPos, window);
264 QInputMethod *im = QGuiApplication::inputMethod();
265 const QTransform mapToLocal = im->inputItemTransform().inverted();
267 int anchor = QInputMethod::queryFocusObject(Qt::ImCursorPosition, anchorPos * mapToLocal).toInt(&success);
269 int cursor = QInputMethod::queryFocusObject(Qt::ImCursorPosition, cursorPos * mapToLocal).toInt(&success);
271 if (anchor == cursor && anchorPos != cursorPos)
273 QList<QInputMethodEvent::Attribute> imAttributes;
274 imAttributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::Selection, anchor, cursor - anchor, QVariant()));
275 QInputMethodEvent event(QString(), imAttributes);
276 QGuiApplication::sendEvent(focus, &event);
286QVariant QPlatformInputContext::queryFocusObject(Qt::InputMethodQuery query, QPointF nativePosition)
288 const QPointF position = QHighDpi::fromNativePixels(nativePosition, QGuiApplication::focusWindow());
289 const QInputMethod *im = QGuiApplication::inputMethod();
290 const QTransform mapToLocal = im->inputItemTransform().inverted();
291 return im->queryFocusObject(query, mapToLocal.map(position));
300QRectF QPlatformInputContext::inputItemRectangle()
302 QInputMethod *im = QGuiApplication::inputMethod();
303 const QRectF deviceIndependentRectangle = im->inputItemTransform().mapRect(im->inputItemRectangle());
304 return QHighDpi::toNativePixels(deviceIndependentRectangle, QGuiApplication::focusWindow());