Revision control
++ // Copyright (C) 2022 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
++ // Qt-Security score:significant reason:default
++
++ #include "qquickinputmethod_p.h"
++
++ #include <QtGui/qguiapplication.h>
++
++ QT_BEGIN_NAMESPACE
++
++ /*!
++ \qmlsingletontype InputMethod
++ \inqmlmodule QtQuick
++
++ \brief Provides access to \l QInputMethod for QML applications.
++
++ The InputMethod singleton allows access to application's \l QInputMethod object
++ and all its properties and slots. See the \l QInputMethod documentation for
++ further details.
++
++ \since 6.4
++ */
++
++ /*!
++ \qmlproperty rect InputMethod::cursorRectangle
++
++ \brief Input item's cursor rectangle in window coordinates.
++
++ The cursor rectangle is often used by various text editing controls
++ like text prediction popups for following the text being typed.
++ */
++
++ /*!
++ \qmlproperty rect InputMethod::anchorRectangle
++
++ \brief Input item's anchor rectangle in window coordinates.
++
++ The anchor rectangle is often used by various text editing controls
++ like text prediction popups for following the text selection.
++ */
++
++ /*!
++ \qmlproperty rect InputMethod::keyboardRectangle
++ \brief Virtual keyboard's geometry in window coordinates.
++
++ This might be an empty rectangle if it is not possible to know the geometry
++ of the keyboard. This is the case for a floating keyboard on android.
++ */
++
++ /*!
++ \qmlproperty rect InputMethod::inputItemClipRectangle
++ \brief Input item's clipped rectangle in window coordinates.
++
++ The clipped input rectangle is often used by various input methods to determine
++ how much screen real estate is available for the input method (e.g. Virtual Keyboard).
++ */
++
++ /*!
++ \qmlproperty bool InputMethod::visible
++ \brief Virtual keyboard's visibility on the screen
++
++ The value of this property remains false for devices
++ with no virtual keyboards.
++
++ \sa show(), hide()
++ */
++
++ /*!
++ \qmlproperty bool InputMethod::animating
++ \brief True when the virtual keyboard is being opened or closed.
++
++ The value of this property is false when keyboard is fully open or closed.
++ When \c animating is \c true and \c visibility is \c true keyboard
++ is being opened. When \c animating is \c true and \c visibility is
++ false keyboard is being closed.
++ */
++
++ /*!
++ \qmlproperty Locale InputMethod::locale
++ \brief Current input locale.
++ */
++
++ /*!
++ \qmlproperty enumeration InputMethod::inputDirection
++ \brief Current input direction.
++
++ Possible values:
++
++ \value Qt.LeftToRight (default) Items are laid out from left to right.
++ \value Qt.RightToLeft Items are laid out from right to left.
++ */
++
++ /*!
++ \qmlmethod void InputMethod::commit()
++
++ Commits the word that the user is currently composing to the editor. The function is
++ mostly needed by the input methods with text prediction features and by the
++ methods where the script used for typing characters is different from the
++ script that actually gets appended to the editor. Any kind of action that
++ interrupts the text composing needs to flush the composing state by calling the
++ commit() function, for example when the cursor is moved elsewhere.
++ */
++
++ /*!
++ \qmlmethod void InputMethod::hide()
++
++ Requests the virtual keyboard to close.
++
++ Normally applications should not need to call this function,
++ as the keyboard should close automatically when the text editor loses
++ focus, for example when the parent view is closed.
++ */
++
++ /*!
++ \qmlmethod void InputMethod::invokeAction(var a, int cursorPosition)
++
++ Called by the input item when the word currently being composed is tapped by
++ the user, as indicated by the action \a a and the given \a cursorPosition.
++ Input methods often use this information to offer more word suggestions to the user.
++
++ \sa QInputMethod::Action
++ */
++
++ /*!
++ \qmlmethod void InputMethod::reset()
++
++ Resets the input method state. For example, a text editor normally calls
++ this method before inserting a text to make widget ready to accept a text.
++
++ Input method resets automatically when the focused editor changes.
++ */
++
++ /*!
++ \qmlmethod void InputMethod::show()
++
++ Requests the virtual keyboard to open. If the platform
++ doesn't provide a virtual keyboard the visibility
++ remains false.
++
++ Normally applications should not need to call this
++ function, as the keyboard should open automatically when
++ the text editor gains focus.
++ */
++
++ /*!
++ \qmlmethod void InputMethod::update(enumeration queries)
++
++ Called by the input item to inform the platform input methods when there have been
++ state changes in the editor's input method query attributes. When calling the function
++ \a queries parameter has to be used to tell what has changed. An input method
++ can use this to make queries for attributes it is interested in with QInputMethodQueryEvent.
++
++ In particular calling update() whenever the cursor position changes is important as
++ that often causes other query attributes, like surrounding text and text selection,
++ to change as well. The attributes that often change together with cursor position
++ have been grouped in Qt::ImQueryInput value for convenience.
++
++ \sa Qt::InputMethodQueries
++ */
++
++ QQuickInputMethod::QQuickInputMethod(QObject *parent) : QObject(parent)
++ {
++ QInputMethod *inputMethod = QGuiApplication::inputMethod();
++ connect(inputMethod, &QInputMethod::anchorRectangleChanged, this,
++ &QQuickInputMethod::anchorRectangleChanged);
++ connect(inputMethod, &QInputMethod::animatingChanged, this,
++ &QQuickInputMethod::animatingChanged);
++ connect(inputMethod, &QInputMethod::cursorRectangleChanged, this,
++ &QQuickInputMethod::cursorRectangleChanged);
++ connect(inputMethod, &QInputMethod::inputDirectionChanged, this,
++ &QQuickInputMethod::inputDirectionChanged);
++ connect(inputMethod, &QInputMethod::inputItemClipRectangleChanged, this,
++ &QQuickInputMethod::inputItemClipRectangleChanged);
++ connect(inputMethod, &QInputMethod::keyboardRectangleChanged, this,
++ &QQuickInputMethod::keyboardRectangleChanged);
++ connect(inputMethod, &QInputMethod::localeChanged, this, &QQuickInputMethod::localeChanged);
++ connect(inputMethod, &QInputMethod::visibleChanged, this, &QQuickInputMethod::visibleChanged);
++ }
++
++ void QQuickInputMethod::commit()
++ {
++ QGuiApplication::inputMethod()->commit();
++ }
++ void QQuickInputMethod::hide()
++ {
++ QGuiApplication::inputMethod()->hide();
++ }
++ void QQuickInputMethod::invokeAction(QInputMethod::Action a, int cursorPosition)
++ {
++ QGuiApplication::inputMethod()->invokeAction(a, cursorPosition);
++ }
++ void QQuickInputMethod::reset()
++ {
++ QGuiApplication::inputMethod()->reset();
++ }
++ void QQuickInputMethod::show()
++ {
++ QGuiApplication::inputMethod()->show();
++ }
++ void QQuickInputMethod::update(Qt::InputMethodQueries queries)
++ {
++ QGuiApplication::inputMethod()->update(queries);
++ }
++
++ QRectF QQuickInputMethod::anchorRectangle() const
++ {
++ return QGuiApplication::inputMethod()->cursorRectangle();
++ }
++ QRectF QQuickInputMethod::cursorRectangle() const
++ {
++ return QGuiApplication::inputMethod()->cursorRectangle();
++ }
++ Qt::LayoutDirection QQuickInputMethod::inputDirection() const
++ {
++ return QGuiApplication::inputMethod()->inputDirection();
++ }
++ QRectF QQuickInputMethod::inputItemClipRectangle() const
++ {
++ return QGuiApplication::inputMethod()->inputItemClipRectangle();
++ }
++
++ QRectF QQuickInputMethod::inputItemRectangle() const
++ {
++ return QGuiApplication::inputMethod()->inputItemRectangle();
++ }
++ void QQuickInputMethod::setInputItemRectangle(const QRectF &rect)
++ {
++ QGuiApplication::inputMethod()->setInputItemRectangle(rect);
++ }
++
++ QTransform QQuickInputMethod::inputItemTransform() const
++ {
++ return QGuiApplication::inputMethod()->inputItemTransform();
++ }
++ void QQuickInputMethod::setInputItemTransform(const QTransform &transform)
++ {
++ QGuiApplication::inputMethod()->setInputItemTransform(transform);
++ }
++
++ bool QQuickInputMethod::isAnimating() const
++ {
++ return QGuiApplication::inputMethod()->isAnimating();
++ }
++
++ bool QQuickInputMethod::isVisible() const
++ {
++ return QGuiApplication::inputMethod()->isVisible();
++ }
++ void QQuickInputMethod::setVisible(bool visible)
++ {
++ QGuiApplication::inputMethod()->setVisible(visible);
++ }
++
++ QRectF QQuickInputMethod::keyboardRectangle() const
++ {
++ return QGuiApplication::inputMethod()->keyboardRectangle();
++ }
++ QLocale QQuickInputMethod::locale() const
++ {
++ return QGuiApplication::inputMethod()->locale();
++ }
++
++ QT_END_NAMESPACE
++
++ #include "moc_qquickinputmethod_p.cpp"