mirror of
https://github.com/rkd77/elinks.git
synced 2025-01-03 14:57:44 -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
|
#ifdef CONFIG_UTF8
|
||||||
{
|
if (ses->tab->term->utf8) {
|
||||||
/* The charset of the terminal; we assume
|
/* fs->value is in UTF-8 regardless of
|
||||||
* fs->value is in this charset.
|
* the charset of the terminal. */
|
||||||
* (Is that OK?) */
|
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,
|
int cp = get_opt_codepage_tree(ses->tab->term->spec,
|
||||||
"charset");
|
"charset");
|
||||||
|
|
||||||
text = u2cp_no_nbsp(get_kbd_key(ev), cp);
|
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
|
#else
|
||||||
fs->value[fs->state++] = get_kbd_key(ev);
|
fs->value[fs->state++] = get_kbd_key(ev);
|
||||||
#endif /* CONFIG_UTF8 */
|
#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_control *fc;
|
||||||
struct form_state *fs;
|
struct form_state *fs;
|
||||||
#ifdef CONFIG_UTF8
|
#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 */
|
#endif /* CONFIG_UTF8 */
|
||||||
|
|
||||||
switch (link->type) {
|
switch (link->type) {
|
||||||
|
Loading…
Reference in New Issue
Block a user