From 6afda499c290bea17fe2bcf5fcd257a1770528cf Mon Sep 17 00:00:00 2001 From: Chris Young Date: Fri, 17 Jul 2015 19:44:26 +0100 Subject: Show the IDN decoded form in the URL bar on GTK if the option is set. --- gtk/scaffolding.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'gtk') 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; -- cgit v1.2.3 From 27adf07fb7752ede0d3a5f874d7c85f2e71c47c2 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Sun, 26 Jul 2015 18:09:25 +0100 Subject: Update gtk frontend to new API --- amiga/gui.c | 2 +- gtk/scaffolding.c | 18 ++++++++++++------ utils/nsurl.h | 2 +- 3 files changed, 14 insertions(+), 8 deletions(-) (limited to 'gtk') diff --git a/amiga/gui.c b/amiga/gui.c index afc05bf67..cfd6b44b2 100644 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -4898,7 +4898,7 @@ static nserror gui_window_set_url(struct gui_window *g, nsurl *url) if(!g) return NSERROR_OK; - if (g == g->shared->gw) { + if(g == g->shared->gw) { if(nsoption_bool(display_decoded_idn) == true) { if (nsurl_access_utf8(url, &idn_url_s, &idn_url_l) == NSERROR_OK) { url_lc = ami_utf8_easy(idn_url_s); diff --git a/gtk/scaffolding.c b/gtk/scaffolding.c index dc03d9453..ef1b4ade7 100644 --- a/gtk/scaffolding.c +++ b/gtk/scaffolding.c @@ -2343,16 +2343,22 @@ 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; + nserror err; g = nsgtk_get_scaffold(gw); if (g->top_level == gw) { - 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); + 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; diff --git a/utils/nsurl.h b/utils/nsurl.h index 383b35711..85e46dfd6 100644 --- a/utils/nsurl.h +++ b/utils/nsurl.h @@ -183,7 +183,7 @@ const char *nsurl_access(const nsurl *url); /** * Access a NetSurf URL object as a UTF-8 string (for human readable IDNs) * - * \param url NetSurf URL to retrieve a string pointer for. + * \param url NetSurf URL object * \param url_s Returns a url string * \param url_l Returns length of url_s * \return NSERROR_OK on success, appropriate error otherwise -- cgit v1.2.3 From aabea8eceb8d77cef934e7b4d0cd2015f1103411 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Sun, 26 Jul 2015 18:11:58 +0100 Subject: Update RISC OS frontend to new API --- gtk/scaffolding.c | 1 - riscos/window.c | 18 +++++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) (limited to 'gtk') diff --git a/gtk/scaffolding.c b/gtk/scaffolding.c index ef1b4ade7..a9904debf 100644 --- a/gtk/scaffolding.c +++ b/gtk/scaffolding.c @@ -2345,7 +2345,6 @@ 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; - nserror err; g = nsgtk_get_scaffold(gw); if (g->top_level == gw) { diff --git a/riscos/window.c b/riscos/window.c index dbed46d2a..59c24ac8a 100644 --- a/riscos/window.c +++ b/riscos/window.c @@ -1038,16 +1038,20 @@ void gui_window_set_pointer(struct gui_window *g, gui_pointer_shape shape) /* exported function documented in riscos/window.h */ nserror ro_gui_window_set_url(struct gui_window *g, nsurl *url) { - char *idn_url = NULL; + size_t idn_url_l; + char *idn_url_s = NULL; if (g->toolbar) { - if (nsoption_bool(display_decoded_idn) == false) { - ro_toolbar_set_url(g->toolbar, nsurl_access(url), true, false); - } else { - idn_url = nsurl_access_utf8(url); - ro_toolbar_set_url(g->toolbar, idn_url, true, false); - free(idn_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; } + + ro_toolbar_set_url(g->toolbar, idn_url_s ? idn_url_s : nsurl_access(url), true, false); + + if (idn_url_s) + free(idn_url_s); + ro_gui_url_complete_start(g->toolbar); } -- cgit v1.2.3