diff options
Diffstat (limited to 'qt/ScintillaEditBase/ScintillaEditBase.cpp')
-rw-r--r-- | qt/ScintillaEditBase/ScintillaEditBase.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/qt/ScintillaEditBase/ScintillaEditBase.cpp b/qt/ScintillaEditBase/ScintillaEditBase.cpp index b64070407..5072cd824 100644 --- a/qt/ScintillaEditBase/ScintillaEditBase.cpp +++ b/qt/ScintillaEditBase/ScintillaEditBase.cpp @@ -542,6 +542,17 @@ void ScintillaEditBase::inputMethodEvent(QInputMethodEvent *event) sqt->view.imeCaretBlockOverride = false; preeditPos = -1; // reset not to interrupt Qt::ImCursorRectangle. + const int rpLength = event->replacementLength(); + if (rpLength != 0) { + // Qt has called setCommitString(). + // Make room for the string to sit in. + const int rpStart = event->replacementStart(); + const Scintilla::Position rpBase = sqt->CurrentPosition(); + const Scintilla::Position start = sqt->pdoc->GetRelativePositionUTF16(rpBase, rpStart); + const Scintilla::Position end = sqt->pdoc->GetRelativePositionUTF16(start, rpLength); + sqt->pdoc->DeleteChars(start, end - start); + } + if (!event->commitString().isEmpty()) { const QString &commitStr = event->commitString(); const int commitStrLen = commitStr.length(); |