48QPlatformInputContext::QPlatformInputContext()
49 : QObject(*(
new QPlatformInputContextPrivate))
53 QMetaObject::invokeMethod(
this, [
this]{
54 m_inputDirection = inputDirection();
55 }, Qt::QueuedConnection);
255void QPlatformInputContext::setSelectionOnFocusObject(
const QPointF &nativeAnchorPos,
const QPointF &nativeCursorPos)
257 QObject *focus =
qApp->focusObject();
261 QWindow *window =
qApp->focusWindow();
262 const QPointF &anchorPos = QHighDpi::fromNativePixels(nativeAnchorPos, window);
263 const QPointF &cursorPos = QHighDpi::fromNativePixels(nativeCursorPos, window);
265 QInputMethod *im = QGuiApplication::inputMethod();
266 const QTransform mapToLocal = im->inputItemTransform().inverted();
268 int anchor = QInputMethod::queryFocusObject(Qt::ImCursorPosition, anchorPos * mapToLocal).toInt(&success);
270 int cursor = QInputMethod::queryFocusObject(Qt::ImCursorPosition, cursorPos * mapToLocal).toInt(&success);
272 if (anchor == cursor && anchorPos != cursorPos)
274 QList<QInputMethodEvent::Attribute> imAttributes;
275 imAttributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::Selection, anchor, cursor - anchor, QVariant()));
276 QInputMethodEvent event(QString(), imAttributes);
277 QGuiApplication::sendEvent(focus, &event);
287QVariant QPlatformInputContext::queryFocusObject(Qt::InputMethodQuery query, QPointF nativePosition)
289 const QPointF position = QHighDpi::fromNativePixels(nativePosition, QGuiApplication::focusWindow());
290 const QInputMethod *im = QGuiApplication::inputMethod();
291 const QTransform mapToLocal = im->inputItemTransform().inverted();
292 return im->queryFocusObject(query, mapToLocal.map(position));
301QRectF QPlatformInputContext::inputItemRectangle()
303 QInputMethod *im = QGuiApplication::inputMethod();
304 const QRectF deviceIndependentRectangle = im->inputItemTransform().mapRect(im->inputItemRectangle());
305 return QHighDpi::toNativePixels(deviceIndependentRectangle, QGuiApplication::focusWindow());