aboutsummaryrefslogtreecommitdiffhomepage
path: root/win32/ScintillaWin.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'win32/ScintillaWin.cxx')
-rw-r--r--win32/ScintillaWin.cxx8
1 files changed, 4 insertions, 4 deletions
diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx
index 2e9cce34a..3c7cd45be 100644
--- a/win32/ScintillaWin.cxx
+++ b/win32/ScintillaWin.cxx
@@ -1093,10 +1093,10 @@ sptr_t ScintillaWin::HandleCompositionInline(uptr_t, sptr_t lParam) {
recordingMacro = tmpRecordingMacro;
// Move IME caret from current last position to imeCaretPos.
- int toImeStart = static_cast<unsigned int>(StringEncode(wcs, codePage).size());
- std::string imeCaret(StringEncode(wcs.substr(0, imc.GetImeCaretPos()), codePage));
- int toImeCaret = static_cast<unsigned int>(imeCaret.size());
- MoveImeCarets(- toImeStart + toImeCaret);
+ int imeEndToImeCaretU16 = imc.GetImeCaretPos() - static_cast<unsigned int>(wcs.size());
+ int imeCaretPosDoc = pdoc->GetRelativePositionUTF16(CurrentPosition(), imeEndToImeCaretU16);
+
+ MoveImeCarets(- CurrentPosition() + imeCaretPosDoc);
if (KoreanIME()) {
view.imeCaretBlockOverride = true;