diff options
| author | Peng Wu <alexepico@gmail.com> | 2025-03-06 13:12:30 +0800 |
|---|---|---|
| committer | Peng Wu <alexepico@gmail.com> | 2025-03-06 20:49:55 +0800 |
| commit | bbf2962050bccb4267b7d75af01c6f652b4e9ecb (patch) | |
| tree | 0948832011cd7cd1a6dbb35c445092b4ad925947 /src | |
| parent | 3ca9dfa36553daba4658ea1d2525ad65825f7bde (diff) | |
| download | ibus-libpinyin-bbf2962050bccb4267b7d75af01c6f652b4e9ecb.tar.gz ibus-libpinyin-bbf2962050bccb4267b7d75af01c6f652b4e9ecb.tar.xz ibus-libpinyin-bbf2962050bccb4267b7d75af01c6f652b4e9ecb.zip | |
Fix the lookup cursor for the pinyin candidates
Diffstat (limited to 'src')
| -rw-r--r-- | src/PYPBopomofoEditor.cc | 2 | ||||
| -rw-r--r-- | src/PYPDoublePinyinEditor.cc | 2 | ||||
| -rw-r--r-- | src/PYPFullPinyinEditor.cc | 1 | ||||
| -rw-r--r-- | src/PYPLibPinyinCandidates.cc | 7 | ||||
| -rw-r--r-- | src/PYPPhoneticEditor.cc | 31 | ||||
| -rw-r--r-- | src/PYPPhoneticEditor.h | 1 |
6 files changed, 38 insertions, 6 deletions
diff --git a/src/PYPBopomofoEditor.cc b/src/PYPBopomofoEditor.cc index 1e03b12..b91b594 100644 --- a/src/PYPBopomofoEditor.cc +++ b/src/PYPBopomofoEditor.cc @@ -73,6 +73,8 @@ BopomofoEditor::insert (gint ch) return TRUE; m_text.insert (m_cursor++, ch); + m_lookup_cursor = 0; + updatePinyin (); update (); diff --git a/src/PYPDoublePinyinEditor.cc b/src/PYPDoublePinyinEditor.cc index 22aa401..fe53ab1 100644 --- a/src/PYPDoublePinyinEditor.cc +++ b/src/PYPDoublePinyinEditor.cc @@ -73,6 +73,8 @@ DoublePinyinEditor::insert (gint ch) #endif m_text.insert (m_cursor++, ch); + m_lookup_cursor = 0; + updatePinyin (); update (); diff --git a/src/PYPFullPinyinEditor.cc b/src/PYPFullPinyinEditor.cc index bd41572..b20a47c 100644 --- a/src/PYPFullPinyinEditor.cc +++ b/src/PYPFullPinyinEditor.cc @@ -58,6 +58,7 @@ FullPinyinEditor::insert (gint ch) #endif m_text.insert (m_cursor++, ch); + m_lookup_cursor = 0; updatePinyin (); update (); diff --git a/src/PYPLibPinyinCandidates.cc b/src/PYPLibPinyinCandidates.cc index dd3d409..6726739 100644 --- a/src/PYPLibPinyinCandidates.cc +++ b/src/PYPLibPinyinCandidates.cc @@ -167,7 +167,12 @@ LibPinyinCandidates::selectCandidate (EnhancedCandidate & enhanced) guint16 begin = 0; pinyin_get_pinyin_key_rest_positions (instance, pos, &begin, NULL); - m_editor->m_cursor = begin; + + /* The cursor is at the end of the text input. */ + if (m_editor->m_cursor == m_editor->m_text.length ()) + m_editor->m_lookup_cursor = begin; + else + m_editor->m_cursor = begin; return SELECT_CANDIDATE_UPDATE; } diff --git a/src/PYPPhoneticEditor.cc b/src/PYPPhoneticEditor.cc index 00fa610..42d759c 100644 --- a/src/PYPPhoneticEditor.cc +++ b/src/PYPPhoneticEditor.cc @@ -31,6 +31,7 @@ PhoneticEditor::PhoneticEditor (PinyinProperties &props, : Editor (props, config), m_pinyin_len (0), m_lookup_table (m_config.pageSize ()), + m_lookup_cursor (0), m_libpinyin_candidates (this), #ifdef IBUS_BUILD_LUA_EXTENSION m_lua_trigger_candidates (this), @@ -379,12 +380,13 @@ PhoneticEditor::getPinyinCursor () guint PhoneticEditor::getLookupCursor (void) { - guint lookup_cursor = getPinyinCursor (); + guint pinyin_cursor = getPinyinCursor (); - /* show candidates when pinyin cursor is at end. */ - if (lookup_cursor == m_text.length ()) - lookup_cursor = 0; - return lookup_cursor; + /* show candidates when pinyin cursor is at the end. */ + if (m_cursor == m_text.length ()) + return m_lookup_cursor; + + return pinyin_cursor; } int @@ -564,6 +566,8 @@ PhoneticEditor::removeCharBefore (void) return FALSE; m_cursor --; + m_lookup_cursor = 0; + m_text.erase (m_cursor, 1); updatePinyin (); @@ -579,6 +583,7 @@ PhoneticEditor::removeCharAfter (void) return FALSE; m_text.erase (m_cursor, 1); + m_lookup_cursor = 0; updatePinyin (); update (); @@ -593,6 +598,8 @@ PhoneticEditor::moveCursorLeft (void) return FALSE; m_cursor --; + m_lookup_cursor = 0; + update (); return TRUE; } @@ -604,6 +611,8 @@ PhoneticEditor::moveCursorRight (void) return FALSE; m_cursor ++; + m_lookup_cursor = 0; + update (); return TRUE; } @@ -615,6 +624,8 @@ PhoneticEditor::moveCursorToBegin (void) return FALSE; m_cursor = 0; + m_lookup_cursor = 0; + update (); return TRUE; } @@ -626,6 +637,8 @@ PhoneticEditor::moveCursorToEnd (void) return FALSE; m_cursor = m_text.length (); + m_lookup_cursor = 0; + update (); return TRUE; } @@ -670,6 +683,8 @@ PhoneticEditor::removeWordBefore (void) guint cursor = getCursorLeftByWord (); m_text.erase (cursor, m_cursor - cursor); m_cursor = cursor; + m_lookup_cursor = 0; + updatePinyin (); update (); return TRUE; @@ -683,6 +698,8 @@ PhoneticEditor::removeWordAfter (void) guint cursor = getCursorRightByWord (); m_text.erase (m_cursor, cursor - m_cursor); + m_lookup_cursor = 0; + updatePinyin (); update (); return TRUE; @@ -697,6 +714,8 @@ PhoneticEditor::moveCursorLeftByWord (void) guint cursor = getCursorLeftByWord (); m_cursor = cursor; + m_lookup_cursor = 0; + update (); return TRUE; } @@ -710,6 +729,8 @@ PhoneticEditor::moveCursorRightByWord (void) guint cursor = getCursorRightByWord (); m_cursor = cursor; + m_lookup_cursor = 0; + update (); return TRUE; } diff --git a/src/PYPPhoneticEditor.h b/src/PYPPhoneticEditor.h index 03e61aa..2032cf1 100644 --- a/src/PYPPhoneticEditor.h +++ b/src/PYPPhoneticEditor.h @@ -117,6 +117,7 @@ protected: /* varibles */ guint m_pinyin_len; LookupTable m_lookup_table; + guint m_lookup_cursor; String m_buffer; /* use LibPinyinBackEnd here. */ |
