aboutsummaryrefslogtreecommitdiffhomepage
path: root/win32/ScintillaWin.cxx
diff options
context:
space:
mode:
authorjohnsonj <unknown>2016-04-14 23:21:56 +1000
committerjohnsonj <unknown>2016-04-14 23:21:56 +1000
commit483bbe47309348d096388379c1ad03e2082f647f (patch)
tree262eb1745b5b08c52a2664c2e34756b283826140 /win32/ScintillaWin.cxx
parent2af8e440eb93ba6e03de7b495bfce70016ed5868 (diff)
downloadscintilla-mirror-483bbe47309348d096388379c1ad03e2082f647f.tar.gz
Simplified IME caret positioning.
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;