summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--desktop/options.h3
-rw-r--r--gtk/scaffolding.c8
-rw-r--r--utils/nsurl.c2
-rw-r--r--utils/nsurl.h2
4 files changed, 12 insertions, 3 deletions
diff --git a/desktop/options.h b/desktop/options.h
index 33ecb7554..f01261ee1 100644
--- a/desktop/options.h
+++ b/desktop/options.h
@@ -185,6 +185,9 @@ NSOPTION_UINT(min_reflow_period, DEFAULT_REFLOW_PERIOD)
/* use core selection menu */
NSOPTION_BOOL(core_select_menu, false)
+/* display decoded international domain names */
+NSOPTION_BOOL(display_decoded_idn, false)
+
/******** Fetcher options ********/
/** Maximum simultaneous active fetchers */
diff --git a/gtk/scaffolding.c b/gtk/scaffolding.c
index 4506ac27f..dc03d9453 100644
--- a/gtk/scaffolding.c
+++ b/gtk/scaffolding.c
@@ -2346,7 +2346,13 @@ nserror gui_window_set_url(struct gui_window *gw, nsurl *url)
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) == false) {
+ gtk_entry_set_text(GTK_ENTRY(g->url_bar), nsurl_access(url));
+ } else {
+ char *idn_url = nsurl_access_utf8(url);
+ gtk_entry_set_text(GTK_ENTRY(g->url_bar), idn_url);
+ free(idn_url);
+ }
gtk_editable_set_position(GTK_EDITABLE(g->url_bar), -1);
}
return NSERROR_OK;
diff --git a/utils/nsurl.c b/utils/nsurl.c
index bb3054df1..6a9296022 100644
--- a/utils/nsurl.c
+++ b/utils/nsurl.c
@@ -1698,7 +1698,7 @@ const char *nsurl_access(const nsurl *url)
return url->string;
}
-const char *nsurl_access_utf8(const nsurl *url)
+char *nsurl_access_utf8(const nsurl *url)
{
lwc_string *host;
char *idna_host;
diff --git a/utils/nsurl.h b/utils/nsurl.h
index 4fbc17b49..07d73f17f 100644
--- a/utils/nsurl.h
+++ b/utils/nsurl.h
@@ -191,7 +191,7 @@ const char *nsurl_access(const nsurl *url);
*
* The returned string has a trailing '\0'.
*/
-const char *nsurl_access_utf8(const nsurl *url);
+char *nsurl_access_utf8(const nsurl *url);
/**