diff --git a/src/document/html/renderer.c b/src/document/html/renderer.c index 30376919..485953c3 100644 --- a/src/document/html/renderer.c +++ b/src/document/html/renderer.c @@ -35,6 +35,7 @@ #include "document/renderer.h" #include "intl/charsets.h" #include "osdep/types.h" +#include "protocol/protocol.h" #include "protocol/uri.h" #include "session/session.h" #include "terminal/color.h" @@ -2411,6 +2412,7 @@ render_html_document(struct cache_entry *cached, struct document *document, unsigned char *start; unsigned char *end; struct string title; + struct string uristring; struct string head; assert(cached && document); @@ -2442,13 +2444,40 @@ render_html_document(struct cache_entry *cached, struct document *document, #endif /* CONFIG_UTF8 */ html_context->doc_cp = document->cp; - if (title.length) { - /* CSM_DEFAULT because init_html_parser() did not - * decode entities in the title. */ - document->title = convert_string(renderer_context.convert_table, - title.source, title.length, +/* setting URI in the title bar */ + if (init_string(&uristring)) { + unsigned char *url; + enum uri_component components; + + if (cached->uri->protocol == PROTOCOL_FILE) { + components = URI_PATH; + } else { + components = URI_PUBLIC; + } + url = get_uri_string(cached->uri, components); + if (url) { +#ifdef CONFIG_UTF8 + if (document->options.utf8) + decode_uri(url); + else +#endif /* CONFIG_UTF8 */ + decode_uri_for_display(url); + + add_to_string(&uristring, url); + add_char_to_string(&uristring, ' '); + mem_free(url); + } + add_string_to_string(&uristring, &title); + + if (uristring.length) { + /* CSM_DEFAULT because init_html_parser() did not + * decode entities in the title. */ + document->title = convert_string(renderer_context.convert_table, + uristring.source, uristring.length, document->options.cp, CSM_DEFAULT, NULL, NULL, NULL); + } + done_string(&uristring); } done_string(&title);