| 754 | } |
| 755 | |
| 756 | void InputMethod::adoptInputMethodContext() |
| 757 | { |
| 758 | auto inputContext = waylandServer()->inputMethod()->context(); |
| 759 | |
| 760 | TextInputV2Interface *t2 = waylandServer()->seat()->textInputV2(); |
| 761 | TextInputV3Interface *t3 = waylandServer()->seat()->textInputV3(); |
| 762 | |
| 763 | if (t2 && t2->isEnabled()) { |
| 764 | inputContext->sendSurroundingText(t2->surroundingText(), t2->surroundingTextCursorPosition(), t2->surroundingTextSelectionAnchor()); |
| 765 | inputContext->sendPreferredLanguage(t2->preferredLanguage()); |
| 766 | inputContext->sendContentType(t2->contentHints(), t2->contentPurpose()); |
| 767 | } else if (t3 && t3->isEnabled()) { |
| 768 | inputContext->sendSurroundingText(t3->surroundingText(), t3->surroundingTextCursorPosition(), t3->surroundingTextSelectionAnchor()); |
| 769 | inputContext->sendContentType(t3->contentHints(), t3->contentPurpose()); |
| 770 | } else if (m_internalContext->isEnabled()) { |
| 771 | inputContext->sendSurroundingText(m_internalContext->surroundingText(), m_internalContext->cursorPosition(), m_internalContext->anchorPosition()); |
| 772 | inputContext->sendContentType(TextInputContentHint::Latin, TextInputContentPurpose::Normal); |
| 773 | } else { |
| 774 | // When we have neither text-input-v2 nor text-input-v3 we can only send |
| 775 | // fake key events, not more complex text. So ask the input method to |
| 776 | // only send basic characters without any pre-editing. |
| 777 | inputContext->sendSurroundingText(QString(), 0, 0); |
| 778 | inputContext->sendContentType(TextInputContentHint::Latin, TextInputContentPurpose::Normal); |
| 779 | } |
| 780 | |
| 781 | inputContext->sendCommitState(m_serial++); |
| 782 | |
| 783 | connect(inputContext, &InputMethodContextV1Interface::textDirection, this, &InputMethod::setTextDirection, Qt::UniqueConnection); |
| 784 | connect(inputContext, &InputMethodContextV1Interface::language, this, &InputMethod::setLanguage, Qt::UniqueConnection); |
| 785 | connect(inputContext, &InputMethodContextV1Interface::keysym, this, &InputMethod::keysymReceived, Qt::UniqueConnection); |
| 786 | connect(inputContext, &InputMethodContextV1Interface::key, this, &InputMethod::key, Qt::UniqueConnection); |
| 787 | connect(inputContext, &InputMethodContextV1Interface::modifiers, this, &InputMethod::modifiers, Qt::UniqueConnection); |
| 788 | connect(inputContext, &InputMethodContextV1Interface::commitString, this, &InputMethod::commitString, Qt::UniqueConnection); |
| 789 | connect(inputContext, &InputMethodContextV1Interface::deleteSurroundingText, this, &InputMethod::deleteSurroundingText, Qt::UniqueConnection); |
| 790 | connect(inputContext, &InputMethodContextV1Interface::cursorPosition, this, &InputMethod::setCursorPosition, Qt::UniqueConnection); |
| 791 | connect(inputContext, &InputMethodContextV1Interface::preeditStyling, this, &InputMethod::setPreeditStyling, Qt::UniqueConnection); |
| 792 | connect(inputContext, &InputMethodContextV1Interface::preeditString, this, &InputMethod::setPreeditString, Qt::UniqueConnection); |
| 793 | connect(inputContext, &InputMethodContextV1Interface::preeditCursor, this, &InputMethod::setPreeditCursor, Qt::UniqueConnection); |
| 794 | connect(inputContext, &InputMethodContextV1Interface::keyboardGrabRequested, this, &InputMethod::installKeyboardGrab, Qt::UniqueConnection); |
| 795 | connect(inputContext, &InputMethodContextV1Interface::modifiersMap, this, &InputMethod::updateModifiersMap, Qt::UniqueConnection); |
| 796 | } |
| 797 | |
| 798 | void InputMethod::updateInputPanelState() |
| 799 | { |
nothing calls this directly
no test coverage detected