diff options
Diffstat (limited to 'src/ZYZPinyinEditor.cc')
-rw-r--r-- | src/ZYZPinyinEditor.cc | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/ZYZPinyinEditor.cc b/src/ZYZPinyinEditor.cc index aa81602..4d7abe0 100644 --- a/src/ZYZPinyinEditor.cc +++ b/src/ZYZPinyinEditor.cc @@ -88,7 +88,20 @@ PinyinEditor::updateZhuyin (void) get_phonetic_section (enhanced_text, start_pos, end_pos, section); zhuyin_instance_t * instance = m_instances[index]; - zhuyin_parse_more_full_pinyins (instance, section.c_str ()); + size_t len = zhuyin_parse_more_full_pinyins + (instance, section.c_str ()); + bool valid = zhuyin_valid_zhuyin_keys (instance); + if (!valid) { + size_t valid_len = zhuyin_get_parsed_input_length (instance); + + const gchar * str = NULL; + zhuyin_get_raw_user_input (instance, &str); + section = str; + + /* hack here: usually only one zhuyin key will have problem, + so it is safe to just move the cursor. */ + m_cursor -= len - valid_len; + } zhuyin_guess_sentence (instance); new_text += section; |