summaryrefslogtreecommitdiffstats
path: root/src/PYPPhoneticEditor.cc
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2011-09-21 11:25:58 +0800
committerPeng Wu <alexepico@gmail.com>2011-12-22 12:23:12 +0800
commit45fc184f99a90c32d282732b5adf1199b219016c (patch)
treefe5760b37ac7f7628fb507c3f7307704bb0ac5ce /src/PYPPhoneticEditor.cc
parentc692d73e9a7953f785dfc6b75b458d2056baa717 (diff)
downloadibus-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.cc14
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;
}