diff options
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r-- | src/plugins/platforms/android/qandroidinputcontext.cpp | 20 | ||||
-rw-r--r-- | src/plugins/platforms/ios/qiostextresponder.mm | 16 |
2 files changed, 21 insertions, 15 deletions
diff --git a/src/plugins/platforms/android/qandroidinputcontext.cpp b/src/plugins/platforms/android/qandroidinputcontext.cpp index 689da5c136..0bd3205e50 100644 --- a/src/plugins/platforms/android/qandroidinputcontext.cpp +++ b/src/plugins/platforms/android/qandroidinputcontext.cpp @@ -1453,12 +1453,11 @@ jboolean QAndroidInputContext::setComposingText(const QString &text, jint newCur else m_composingCursor = -1; - QInputMethodEvent event; if (focusObjectIsComposing()) { QTextCharFormat underlined; underlined.setFontUnderline(true); - event = QInputMethodEvent(m_composingText, { + QInputMethodEvent event(m_composingText, { { QInputMethodEvent::TextFormat, 0, int(m_composingText.length()), underlined }, { QInputMethodEvent::Cursor, m_composingCursor - m_composingTextStart, 1 } }); @@ -1467,8 +1466,12 @@ jboolean QAndroidInputContext::setComposingText(const QString &text, jint newCur event.setCommitString({}, m_composingTextStart - effectiveAbsoluteCursorPos, oldComposingTextLen); } + if (m_composingText.isEmpty()) + clear(); + + QGuiApplication::sendEvent(m_focusObject, &event); } else { - event = QInputMethodEvent({}, {}); + QInputMethodEvent event({}, {}); if (focusObjectWasComposing) { event.setCommitString(m_composingText); @@ -1477,12 +1480,11 @@ jboolean QAndroidInputContext::setComposingText(const QString &text, jint newCur m_composingTextStart - effectiveAbsoluteCursorPos, oldComposingTextLen); } - } - - if (m_composingText.isEmpty()) - clear(); + if (m_composingText.isEmpty()) + clear(); - QGuiApplication::sendEvent(m_focusObject, &event); + QGuiApplication::sendEvent(m_focusObject, &event); + } if (!focusObjectIsComposing() && newCursorPosition != 1) { // Move cursor using a separate event because if we have inserted or deleted a newline @@ -1491,7 +1493,7 @@ jboolean QAndroidInputContext::setComposingText(const QString &text, jint newCur const int newBlockPos = getBlockPosition( focusObjectInputMethodQuery(Qt::ImCursorPosition | Qt::ImAbsolutePosition)); - event = QInputMethodEvent({}, { + QInputMethodEvent event({}, { { QInputMethodEvent::Selection, newAbsoluteCursorPos - newBlockPos, 0 } }); diff --git a/src/plugins/platforms/ios/qiostextresponder.mm b/src/plugins/platforms/ios/qiostextresponder.mm index 19e476a064..358ccbf602 100644 --- a/src/plugins/platforms/ios/qiostextresponder.mm +++ b/src/plugins/platforms/ios/qiostextresponder.mm @@ -178,7 +178,7 @@ m_inSelectionChange = NO; m_inputContext = inputContext; - m_configuredImeState = new QInputMethodQueryEvent(m_inputContext->imeState().currentState); + m_configuredImeState = static_cast<QInputMethodQueryEvent*>(m_inputContext->imeState().currentState.clone()); QVariantMap platformData = m_configuredImeState->value(Qt::ImPlatformData).toMap(); Qt::InputMethodHints hints = Qt::InputMethodHints(m_configuredImeState->value(Qt::ImHints).toUInt()); @@ -828,20 +828,24 @@ NSRange r = static_cast<QUITextRange*>(range).range; QList<QInputMethodEvent::Attribute> attrs; attrs << QInputMethodEvent::Attribute(QInputMethodEvent::Selection, r.location, 0, 0); - QInputMethodEvent e(m_markedText, attrs); - [self sendEventToFocusObject:e]; + { + QInputMethodEvent e(m_markedText, attrs); + [self sendEventToFocusObject:e]; + } QRectF startRect = qApp->inputMethod()->cursorRectangle(); attrs = QList<QInputMethodEvent::Attribute>(); attrs << QInputMethodEvent::Attribute(QInputMethodEvent::Selection, r.location + r.length, 0, 0); - e = QInputMethodEvent(m_markedText, attrs); - [self sendEventToFocusObject:e]; + { + QInputMethodEvent e(m_markedText, attrs); + [self sendEventToFocusObject:e]; + } QRectF endRect = qApp->inputMethod()->cursorRectangle(); if (cursorPos != int(r.location + r.length) || cursorPos != anchorPos) { attrs = QList<QInputMethodEvent::Attribute>(); attrs << QInputMethodEvent::Attribute(QInputMethodEvent::Selection, qMin(cursorPos, anchorPos), qAbs(cursorPos - anchorPos), 0); - e = QInputMethodEvent(m_markedText, attrs); + QInputMethodEvent e(m_markedText, attrs); [self sendEventToFocusObject:e]; } |