summaryrefslogtreecommitdiffstats
path: root/src/PYPPhoneticEditor.cc
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2011-11-07 14:50:54 +0800
committerPeng Wu <alexepico@gmail.com>2011-12-22 12:23:15 +0800
commit2db3c83f7ed2dbcba3c579cfe9963577eaf58a59 (patch)
treeb556ced66a7e0f465d6a7b646f04d92a45108a9a /src/PYPPhoneticEditor.cc
parent4b12c07f98d9e0cb437034ad5215b9001e98321e (diff)
downloadibus-libpinyin-2db3c83f7ed2dbcba3c579cfe9963577eaf58a59.tar.gz
ibus-libpinyin-2db3c83f7ed2dbcba3c579cfe9963577eaf58a59.tar.xz
ibus-libpinyin-2db3c83f7ed2dbcba3c579cfe9963577eaf58a59.zip
add get lookup cursor function
Diffstat (limited to 'src/PYPPhoneticEditor.cc')
-rw-r--r--src/PYPPhoneticEditor.cc35
1 files changed, 20 insertions, 15 deletions
diff --git a/src/PYPPhoneticEditor.cc b/src/PYPPhoneticEditor.cc
index c5c8041..b9dbc85 100644
--- a/src/PYPPhoneticEditor.cc
+++ b/src/PYPPhoneticEditor.cc
@@ -298,15 +298,13 @@ LibPinyinPhoneticEditor::reset (void)
void
LibPinyinPhoneticEditor::update (void)
{
- PinyinKeyVector & pinyins = m_instance->m_pinyin_keys;
- guint pinyin_cursor = getPinyinCursor ();
- /* show candidates when pinyin cursor is at end. */
- if (pinyin_cursor == pinyins->len && m_pinyin_len == m_text.length())
- pinyin_cursor = 0;
- pinyin_get_candidates (m_instance, pinyin_cursor, m_candidates);
+ guint lookup_cursor = getLookupCursor ();
+ pinyin_get_candidates (m_instance, lookup_cursor, m_candidates);
+
/* show guessed sentence only when m_candidates are available. */
if (m_candidates->len)
g_array_insert_val(m_candidates, 0, null_token);
+
updateLookupTable ();
updatePreeditText ();
updateAuxiliaryText ();
@@ -336,6 +334,17 @@ LibPinyinPhoneticEditor::getPinyinCursor ()
return pinyin_cursor;
}
+guint
+LibPinyinPhoneticEditor::getLookupCursor (void)
+{
+ PinyinKeyVector & pinyins = m_instance->m_pinyin_keys;
+ guint lookup_cursor = getPinyinCursor ();
+ /* show candidates when pinyin cursor is at end. */
+ if (lookup_cursor == pinyins->len && m_pinyin_len == m_text.length())
+ lookup_cursor = 0;
+ return lookup_cursor;
+}
+
gboolean
LibPinyinPhoneticEditor::selectCandidate (guint i)
{
@@ -343,11 +352,7 @@ LibPinyinPhoneticEditor::selectCandidate (guint i)
if (G_UNLIKELY (i >= m_candidates->len))
return FALSE;
- PinyinKeyVector & pinyins = m_instance->m_pinyin_keys;
- guint pinyin_cursor = getPinyinCursor ();
- /* show candidates when pinyin cursor is at end. */
- if (pinyin_cursor == pinyins->len && m_pinyin_len == m_text.length())
- pinyin_cursor = 0;
+ guint lookup_cursor = getLookupCursor ();
/* NOTE: deal with normal candidates selection here by libpinyin. */
phrase_token_t *token = &g_array_index (m_candidates, phrase_token_t, i);
@@ -356,17 +361,17 @@ LibPinyinPhoneticEditor::selectCandidate (guint i)
return TRUE;
}
- guint8 len = pinyin_choose_candidate (m_instance, pinyin_cursor, *token);
+ guint8 len = pinyin_choose_candidate (m_instance, lookup_cursor, *token);
pinyin_guess_sentence (m_instance);
PinyinKeyPosVector & pinyin_poses = m_instance->m_pinyin_poses;
- pinyin_cursor += len;
- if (pinyin_cursor == pinyin_poses->len) {
+ lookup_cursor += len;
+ if (lookup_cursor == pinyin_poses->len) {
commit();
return TRUE;
}
PinyinKeyPos *pos = &g_array_index
- (pinyin_poses, PinyinKeyPos, pinyin_cursor);
+ (pinyin_poses, PinyinKeyPos, lookup_cursor);
m_cursor = pos->get_pos();
return TRUE;