diff options
author | Peng Wu <alexepico@gmail.com> | 2011-09-21 11:25:58 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2011-12-22 12:23:12 +0800 |
commit | 45fc184f99a90c32d282732b5adf1199b219016c (patch) | |
tree | fe5760b37ac7f7628fb507c3f7307704bb0ac5ce /src/PYPPhoneticEditor.cc | |
parent | c692d73e9a7953f785dfc6b75b458d2056baa717 (diff) | |
download | ibus-libpinyin-45fc184f99a90c32d282732b5adf1199b219016c.tar.gz ibus-libpinyin-45fc184f99a90c32d282732b5adf1199b219016c.tar.xz ibus-libpinyin-45fc184f99a90c32d282732b5adf1199b219016c.zip |
use pinyin pos
Diffstat (limited to 'src/PYPPhoneticEditor.cc')
-rw-r--r-- | src/PYPPhoneticEditor.cc | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/PYPPhoneticEditor.cc b/src/PYPPhoneticEditor.cc index a26ce85..217e545 100644 --- a/src/PYPPhoneticEditor.cc +++ b/src/PYPPhoneticEditor.cc @@ -299,13 +299,15 @@ guint LibPinyinPhoneticEditor::getPinyinCursor () { /* Translate cursor position to pinyin position. */ - guint pinyin_cursor = m_pinyins.size (); - PinyinArray::const_iterator iter = m_pinyins.begin (); - for ( ; iter != m_pinyins.end (); ++iter) { - guint end = iter->begin + iter->len; - if ( iter->begin <= m_cursor && m_cursor < end ) - pinyin_cursor = iter - m_pinyins.begin (); + PinyinKeyPosVector & pinyin_poses = m_instance->m_pinyin_poses; + guint pinyin_cursor = pinyin_poses->len; + for (size_t i = 0; i < pinyin_poses->len; ++i) { + PinyinKeyPos *pos = &g_array_index + (pinyin_poses, PinyinKeyPos, i); + if (pos->get_pos () <= m_cursor && m_cursor < pos->get_end_pos ()) + pinyin_cursor = i; } + g_assert (pinyin_cursor >= 0); return pinyin_cursor; } |