mirror of
https://github.com/rkd77/elinks.git
synced 2024-12-04 14:46:47 -05:00
Bug 821: With CONFIG_UTF8 and UTF-8 I/O, form_state.value is in UTF-8.
That is even if the document and the terminal have some other charset.
This commit is contained in:
parent
50b6a61f31
commit
4076759890
@ -1744,26 +1744,29 @@ field_op(struct session *ses, struct document_view *doc_view,
|
||||
}
|
||||
|
||||
#ifdef CONFIG_UTF8
|
||||
{
|
||||
/* The charset of the terminal; we assume
|
||||
* fs->value is in this charset.
|
||||
* (Is that OK?) */
|
||||
if (ses->tab->term->utf8) {
|
||||
/* fs->value is in UTF-8 regardless of
|
||||
* the charset of the terminal. */
|
||||
text = encode_utf8(get_kbd_key(ev));
|
||||
} else {
|
||||
/* fs->value is in the charset of the
|
||||
* terminal. */
|
||||
int cp = get_opt_codepage_tree(ses->tab->term->spec,
|
||||
"charset");
|
||||
|
||||
text = u2cp_no_nbsp(get_kbd_key(ev), cp);
|
||||
length = strlen(text);
|
||||
|
||||
if (strlen(fs->value) + length > fc->maxlength
|
||||
|| !insert_in_string(&fs->value, fs->state, text, length)) {
|
||||
status = FRAME_EVENT_OK;
|
||||
break;
|
||||
}
|
||||
|
||||
fs->state += length;
|
||||
if (fc->type == FC_TEXTAREA)
|
||||
fs->state_cell = 0;
|
||||
}
|
||||
length = strlen(text);
|
||||
|
||||
if (strlen(fs->value) + length > fc->maxlength
|
||||
|| !insert_in_string(&fs->value, fs->state, text, length)) {
|
||||
status = FRAME_EVENT_OK;
|
||||
break;
|
||||
}
|
||||
|
||||
fs->state += length;
|
||||
if (fc->type == FC_TEXTAREA)
|
||||
fs->state_cell = 0;
|
||||
#else
|
||||
fs->value[fs->state++] = get_kbd_key(ev);
|
||||
#endif /* CONFIG_UTF8 */
|
||||
|
@ -115,7 +115,9 @@ get_link_cursor_offset(struct document_view *doc_view, struct link *link)
|
||||
struct form_control *fc;
|
||||
struct form_state *fs;
|
||||
#ifdef CONFIG_UTF8
|
||||
int utf8 = doc_view->document->options.utf8;
|
||||
/* The encoding of form fields depends on the terminal,
|
||||
* rather than on the document. */
|
||||
int utf8 = doc_view->session->tab->term->utf8;
|
||||
#endif /* CONFIG_UTF8 */
|
||||
|
||||
switch (link->type) {
|
||||
|
Loading…
Reference in New Issue
Block a user