1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-04-18 19:48:05 -05:00

Add an API for passing pre-edit text to terminal; call from GTK

The terminal code doesn't yet do anything with the text other than feed
it to a debugging printf.  The call uses UTF-8 and expects the terminal
to copy the string because that's compatible with
gtk_im_context_get_preedit_string().
This commit is contained in:
Ben Harris 2025-03-30 14:02:37 +01:00
parent 227b9ae470
commit 194ca31cc3
3 changed files with 13 additions and 0 deletions

View File

@ -2044,6 +2044,7 @@ void term_notify_palette_changed(Terminal *term);
void term_notify_window_pos(Terminal *term, int x, int y);
void term_notify_window_size_pixels(Terminal *term, int x, int y);
void term_palette_override(Terminal *term, unsigned osc4_index, rgb rgb);
void term_set_preedit_text(Terminal *term, char *preedit_text);
typedef enum SmallKeypadKey {
SKK_HOME, SKK_END, SKK_INSERT, SKK_DELETE, SKK_PGUP, SKK_PGDN,

View File

@ -8106,3 +8106,13 @@ void term_notify_window_size_pixels(Terminal *term, int x, int y)
term->winpixsize_x = x;
term->winpixsize_y = y;
}
/*
* Set the pre-edit text as required by an input method. preedit_text
* is expected to be in UTF-8. It's NULL if no pre-edit text is
* required. It's owned by the caller and must not be freed here.
*/
void term_set_preedit_text(Terminal *term, char *preedit_text)
{
debug("Pre-edit: %s\n", preedit_text);
}

View File

@ -2150,6 +2150,7 @@ void input_method_preedit_changed_event(GtkIMContext *imc, gpointer data)
string_string, (int)cursor_pos);
sfree(string_string);
#endif
term_set_preedit_text(inst->term, preedit_string);
g_free(preedit_string);
}
@ -2160,6 +2161,7 @@ void input_method_preedit_end_event(GtkIMContext *imc, gpointer data)
#ifdef KEY_EVENT_DIAGNOSTICS
debug(" - IM preedit-end event\n");
#endif
term_set_preedit_text(inst->term, NULL);
}
#endif