コード例 #1
0
ファイル: editor.c プロジェクト: anarsoul/weston
static void
text_model_preedit_string(void *data,
			  struct text_model *text_model,
			  const char *text,
			  uint32_t index)
{
	struct text_entry *entry = data;

	if (index > strlen(text)) {
		fprintf(stderr, "Invalid cursor index %d\n", index);
		index = strlen(text);
	}

	text_entry_delete_selected_text(entry);
	text_entry_set_preedit(entry, text, index);

	widget_schedule_redraw(entry->widget);
}
コード例 #2
0
ファイル: editor.c プロジェクト: etrunko/weston
static void
text_input_preedit_string(void *data,
			  struct wl_text_input *text_input,
			  uint32_t serial,
			  const char *text,
			  const char *commit)
{
	struct text_entry *entry = data;

	text_entry_delete_selected_text(entry);
	text_entry_set_preedit(entry, text, entry->preedit_info.cursor);
	entry->preedit.commit = strdup(commit);
	entry->preedit.attr_list = entry->preedit_info.attr_list;

	entry->preedit_info.cursor = 0;
	entry->preedit_info.attr_list = NULL;

	text_entry_update(entry);

	widget_schedule_redraw(entry->widget);
}
コード例 #3
0
ファイル: editor.c プロジェクト: bpeel/weston
static void
text_input_preedit_string(void *data,
			  struct wl_text_input *text_input,
			  uint32_t serial,
			  const char *text,
			  const char *commit)
{
	struct text_entry *entry = data;

	if ((entry->serial - serial) > (entry->serial - entry->reset_serial)) {
		fprintf(stderr, "Ignore preedit_string. Serial: %u, Current: %u, Reset: %u\n",
			serial, entry->serial, entry->reset_serial);
		clear_pending_preedit(entry);
		return;
	}

	if (entry->pending_commit.invalid_delete) {
		fprintf(stderr, "Ignore preedit_string. Invalid previous delete_surrounding event.\n");
		clear_pending_preedit(entry);
		return;
	}

	if (entry->pending_commit.delete_length) {
		text_entry_delete_text(entry,
				       entry->pending_commit.delete_index,
				       entry->pending_commit.delete_length);
	} else {
		text_entry_delete_selected_text(entry);
	}

	text_entry_set_preedit(entry, text, entry->preedit_info.cursor);
	entry->preedit.commit = strdup(commit);
	entry->preedit.attr_list = pango_attr_list_ref(entry->preedit_info.attr_list);

	clear_pending_preedit(entry);

	text_entry_update(entry);

	widget_schedule_redraw(entry->widget);
}