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(-) 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