summaryrefslogtreecommitdiffstats
path: root/src/PYPPhoneticEditor.cc
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2012-07-04 10:13:09 +0800
committerPeng Wu <alexepico@gmail.com>2012-07-04 10:13:09 +0800
commit268b6cb3d7be7ccbf1a38afcfc2220fab00077d7 (patch)
tree3ddbf76acf014ed0141bbd235e5d9d2d7acd3db0 /src/PYPPhoneticEditor.cc
parentc4476db5b591139c3c9c0f388be87459d550ec81 (diff)
downloadibus-libpinyin-268b6cb3d7be7ccbf1a38afcfc2220fab00077d7.tar.gz
ibus-libpinyin-268b6cb3d7be7ccbf1a38afcfc2220fab00077d7.tar.xz
ibus-libpinyin-268b6cb3d7be7ccbf1a38afcfc2220fab00077d7.zip
fixes getPinyinCursor
Diffstat (limited to 'src/PYPPhoneticEditor.cc')
-rw-r--r--src/PYPPhoneticEditor.cc8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/PYPPhoneticEditor.cc b/src/PYPPhoneticEditor.cc
index aaea9b5..73f5a09 100644
--- a/src/PYPPhoneticEditor.cc
+++ b/src/PYPPhoneticEditor.cc
@@ -313,11 +313,17 @@ LibPinyinPhoneticEditor::getPinyinCursor ()
/* Translate cursor position to pinyin position. */
PinyinKeyPosVector & pinyin_poses = m_instance->m_pinyin_key_rests;
guint pinyin_cursor = pinyin_poses->len;
+
+ guint16 prev_end = 0, cur_end;
for (size_t i = 0; i < pinyin_poses->len; ++i) {
PinyinKeyPos *pos = &g_array_index
(pinyin_poses, PinyinKeyPos, i);
- if (pos->m_raw_begin <= m_cursor && m_cursor < pos->m_raw_end)
+ cur_end = pos->m_raw_end;
+
+ if (prev_end <= m_cursor && m_cursor < cur_end)
pinyin_cursor = i;
+
+ prev_end = cur_end;
}
g_assert (pinyin_cursor >= 0);