MCPcopy Create free account
hub / github.com/KDE/kwin / adoptInputMethodContext

Method adoptInputMethodContext

src/inputmethod.cpp:756–796  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

754}
755
756void 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
798void InputMethod::updateInputPanelState()
799{

Callers

nothing calls this directly

Calls 15

waylandServerFunction · 0.85
QStringClass · 0.85
inputMethodMethod · 0.80
textInputV2Method · 0.80
textInputV3Method · 0.80
sendSurroundingTextMethod · 0.80
sendPreferredLanguageMethod · 0.80
preferredLanguageMethod · 0.80
sendContentTypeMethod · 0.80
cursorPositionMethod · 0.80
anchorPositionMethod · 0.80
sendCommitStateMethod · 0.80

Tested by

no test coverage detected