diff options
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/scaffolding.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/gtk/scaffolding.c b/gtk/scaffolding.c index 4506ac27f..a9904debf 100644 --- a/gtk/scaffolding.c +++ b/gtk/scaffolding.c @@ -2343,10 +2343,21 @@ void nsgtk_window_set_title(struct gui_window *gw, const char *title) nserror gui_window_set_url(struct gui_window *gw, nsurl *url) { struct nsgtk_scaffolding *g; + size_t idn_url_l; + char *idn_url_s = NULL; g = nsgtk_get_scaffold(gw); if (g->top_level == gw) { - gtk_entry_set_text(GTK_ENTRY(g->url_bar), nsurl_access(url)); + if (nsoption_bool(display_decoded_idn) == true) { + if (nsurl_access_utf8(url, &idn_url_s, &idn_url_l) != NSERROR_OK) + idn_url_s = NULL; + } + + gtk_entry_set_text(GTK_ENTRY(g->url_bar), idn_url_s ? idn_url_s : nsurl_access(url)); + + if(idn_url_s) + free(idn_url_s); + gtk_editable_set_position(GTK_EDITABLE(g->url_bar), -1); } return NSERROR_OK; |