From 4300168afda16a42df805cdff8a0c5c192356283 Mon Sep 17 00:00:00 2001 From: Peng Wu Date: Sun, 21 Jun 2015 09:59:43 +0800 Subject: auto commit when press space key --- src/ZYZZhuyinEditor.cc | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'src/ZYZZhuyinEditor.cc') diff --git a/src/ZYZZhuyinEditor.cc b/src/ZYZZhuyinEditor.cc index 26fc028..d377afe 100644 --- a/src/ZYZZhuyinEditor.cc +++ b/src/ZYZZhuyinEditor.cc @@ -62,10 +62,12 @@ ZhuyinEditor::commit (void) void ZhuyinEditor::reset (void) { + m_preedit_text = ""; + PhoneticEditor::reset (); } -void +guint ZhuyinEditor::updateZhuyin (void) { const String & enhanced_text = m_text; @@ -74,6 +76,7 @@ ZhuyinEditor::updateZhuyin (void) size_t index = 0; size_t start_pos = 0, end_pos = 0; + guint pos = 0; while (end_pos != enhanced_text.size ()) { section_t type = probe_section_quick (enhanced_text, start_pos); @@ -87,6 +90,8 @@ ZhuyinEditor::updateZhuyin (void) (instance, section.c_str ()); zhuyin_guess_sentence (instance); + pos = start_pos + len; + ++index; } @@ -99,7 +104,7 @@ ZhuyinEditor::updateZhuyin (void) start_pos = end_pos; } - return; + return pos; } void @@ -194,7 +199,17 @@ ZhuyinEditor::insert (guint keyval, guint keycode, guint modifiers) insert_phonetic (m_text, m_cursor++, keyval); - updateZhuyin (); + guint len = updateZhuyin (); + + /* the space key is part of zhuyin string. */ + if (IBUS_space == keyval && + len < m_text.size () && + m_cursor == get_enhanced_text_length (m_text)) { + update (); + commit (); + return TRUE; + } + update (); return TRUE; } -- cgit