@@ -389,8 +389,9 @@ RIME_API Bool RimeFreeStatus(RimeStatus* status) {
389
389
390
390
// Accessing candidate list
391
391
392
- RIME_API Bool RimeCandidateListBegin (RimeSessionId session_id,
393
- RimeCandidateListIterator* iterator) {
392
+ RIME_API Bool RimeCandidateListFromIndex (RimeSessionId session_id,
393
+ RimeCandidateListIterator* iterator,
394
+ int index) {
394
395
if (!iterator)
395
396
return False;
396
397
an<Session> session (Service::instance ().GetSession (session_id));
@@ -401,10 +402,15 @@ RIME_API Bool RimeCandidateListBegin(RimeSessionId session_id,
401
402
return False;
402
403
memset (iterator, 0 , sizeof (RimeCandidateListIterator));
403
404
iterator->ptr = ctx->composition ().back ().menu .get ();
404
- iterator->index = - 1 ;
405
+ iterator->index = index - 1 ;
405
406
return True;
406
407
}
407
408
409
+ RIME_API Bool RimeCandidateListBegin (RimeSessionId session_id,
410
+ RimeCandidateListIterator* iterator) {
411
+ return RimeCandidateListFromIndex (session_id, iterator, 0 );
412
+ }
413
+
408
414
RIME_API Bool RimeCandidateListNext (RimeCandidateListIterator* iterator) {
409
415
if (!iterator)
410
416
return False;
@@ -1054,6 +1060,7 @@ RIME_API RimeApi* rime_get_api() {
1054
1060
s_api.candidate_list_begin = &RimeCandidateListBegin;
1055
1061
s_api.candidate_list_next = &RimeCandidateListNext;
1056
1062
s_api.candidate_list_end = &RimeCandidateListEnd;
1063
+ s_api.candidate_list_from_index = &RimeCandidateListFromIndex;
1057
1064
}
1058
1065
return &s_api;
1059
1066
}
0 commit comments