mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-04-21 04:55:02 -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:
parent
227b9ae470
commit
194ca31cc3
1
putty.h
1
putty.h
@ -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_pos(Terminal *term, int x, int y);
|
||||||
void term_notify_window_size_pixels(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_palette_override(Terminal *term, unsigned osc4_index, rgb rgb);
|
||||||
|
void term_set_preedit_text(Terminal *term, char *preedit_text);
|
||||||
|
|
||||||
typedef enum SmallKeypadKey {
|
typedef enum SmallKeypadKey {
|
||||||
SKK_HOME, SKK_END, SKK_INSERT, SKK_DELETE, SKK_PGUP, SKK_PGDN,
|
SKK_HOME, SKK_END, SKK_INSERT, SKK_DELETE, SKK_PGUP, SKK_PGDN,
|
||||||
|
@ -8106,3 +8106,13 @@ void term_notify_window_size_pixels(Terminal *term, int x, int y)
|
|||||||
term->winpixsize_x = x;
|
term->winpixsize_x = x;
|
||||||
term->winpixsize_y = y;
|
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);
|
||||||
|
}
|
||||||
|
@ -2150,6 +2150,7 @@ void input_method_preedit_changed_event(GtkIMContext *imc, gpointer data)
|
|||||||
string_string, (int)cursor_pos);
|
string_string, (int)cursor_pos);
|
||||||
sfree(string_string);
|
sfree(string_string);
|
||||||
#endif
|
#endif
|
||||||
|
term_set_preedit_text(inst->term, preedit_string);
|
||||||
g_free(preedit_string);
|
g_free(preedit_string);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2160,6 +2161,7 @@ void input_method_preedit_end_event(GtkIMContext *imc, gpointer data)
|
|||||||
#ifdef KEY_EVENT_DIAGNOSTICS
|
#ifdef KEY_EVENT_DIAGNOSTICS
|
||||||
debug(" - IM preedit-end event\n");
|
debug(" - IM preedit-end event\n");
|
||||||
#endif
|
#endif
|
||||||
|
term_set_preedit_text(inst->term, NULL);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user