void InputContext::commit_cb(void *ptr, const char *str) { InputContext *ic = (InputContext *)ptr; XimIC *xic = ic->get_ic(); ic->clear_pe_stat(); ic->update_preedit(); xic->commit_string(str); }
static void candwin_read_cb(int fd, int /* ev */) { char buf[1024]; int n; n = static_cast<int>(read(fd, buf, 1024 - 1)); if (n == 0) { terminate_canddisp_connection(); return; } if (n == -1) return; buf[n] = '\0'; if (!strcmp(buf, "err")) { terminate_canddisp_connection(); return; } InputContext *focusedContext = InputContext::focusedContext(); if (focusedContext) { char *line = buf; char *eol = strchr(line, '\n'); if (eol != NULL) *eol = '\0'; if (strcmp("index", line) == 0) { line = eol + 1; eol = strchr(line, '\n'); if (eol != NULL) *eol = '\0'; int index; sscanf(line, "%d", &index); focusedContext->candidate_select(index); uim_set_candidate_index(focusedContext->getUC(), index); // send packet queue for drawing on-the-spot preedit strings focusedContext->get_ic()->force_send_packet(); } } return; }