summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2022-09-23 16:33:49 +0800
committerPeng Wu <alexepico@gmail.com>2022-09-23 16:33:49 +0800
commitabd006be68be04509801ca5ff52d759f9d21c724 (patch)
tree2eb0a8669670ec1c7b59a4b1040dce15024ccdc4
parent98f7e43b3bfe69f6cbcd2e7c2479c8cac503f580 (diff)
downloadibus-libpinyin-abd006be68be04509801ca5ff52d759f9d21c724.tar.gz
Improve Suggestion candidates
-rw-r--r--src/PYPEnhancedCandidates.h3
-rw-r--r--src/PYPSuggestionCandidates.cc17
-rw-r--r--src/PYPSuggestionEditor.cc3
3 files changed, 18 insertions, 5 deletions
diff --git a/src/PYPEnhancedCandidates.h b/src/PYPEnhancedCandidates.h
index c418434..e5bc62f 100644
--- a/src/PYPEnhancedCandidates.h
+++ b/src/PYPEnhancedCandidates.h
@@ -35,10 +35,11 @@ enum CandidateType {
CANDIDATE_NORMAL,
/* both normal candidate and user candidate */
CANDIDATE_USER,
+ CANDIDATE_PREDICTED_BIGRAM,
+ CANDIDATE_PREDICTED_PREFIX,
CANDIDATE_TRADITIONAL_CHINESE,
CANDIDATE_LUA_TRIGGER,
CANDIDATE_LUA_CONVERTER,
- CANDIDATE_SUGGESTION,
CANDIDATE_CLOUD_INPUT,
CANDIDATE_EMOJI,
CANDIDATE_ENGLISH
diff --git a/src/PYPSuggestionCandidates.cc b/src/PYPSuggestionCandidates.cc
index 48fcb45..7f8aa1c 100644
--- a/src/PYPSuggestionCandidates.cc
+++ b/src/PYPSuggestionCandidates.cc
@@ -39,13 +39,23 @@ SuggestionCandidates::processCandidates (std::vector<EnhancedCandidate> & candid
lookup_candidate_type_t type;
pinyin_get_candidate_type (instance, candidate, &type);
- assert (PREDICTED_CANDIDATE == type);
+ CandidateType candidate_type;
+ switch (type) {
+ case PREDICTED_BIGRAM_CANDIDATE:
+ candidate_type = CANDIDATE_PREDICTED_BIGRAM;
+ break;
+ case PREDICTED_PREFIX_CANDIDATE:
+ candidate_type = CANDIDATE_PREDICTED_PREFIX;
+ break;
+ default:
+ assert(FALSE);
+ }
const gchar * phrase_string = NULL;
pinyin_get_candidate_string (instance, candidate, &phrase_string);
EnhancedCandidate enhanced;
- enhanced.m_candidate_type = CANDIDATE_SUGGESTION;
+ enhanced.m_candidate_type = candidate_type;
enhanced.m_candidate_id = i;
enhanced.m_display_string = phrase_string;
@@ -59,7 +69,8 @@ int
SuggestionCandidates::selectCandidate (EnhancedCandidate & enhanced)
{
pinyin_instance_t * instance = m_editor->m_instance;
- assert (CANDIDATE_SUGGESTION == enhanced.m_candidate_type);
+ assert (CANDIDATE_PREDICTED_BIGRAM == enhanced.m_candidate_type ||
+ CANDIDATE_PREDICTED_PREFIX == enhanced.m_candidate_type);
guint len = 0;
pinyin_get_n_candidate (instance, &len);
diff --git a/src/PYPSuggestionEditor.cc b/src/PYPSuggestionEditor.cc
index 22e020d..f66231a 100644
--- a/src/PYPSuggestionEditor.cc
+++ b/src/PYPSuggestionEditor.cc
@@ -341,7 +341,8 @@ int
SuggestionEditor::selectCandidateInternal (EnhancedCandidate & candidate)
{
switch (candidate.m_candidate_type) {
- case CANDIDATE_SUGGESTION:
+ case CANDIDATE_PREDICTED_BIGRAM:
+ case CANDIDATE_PREDICTED_PREFIX:
return m_suggestion_candidates.selectCandidate (candidate);
case CANDIDATE_TRADITIONAL_CHINESE: