From 7ace528729c37d665e269c8a76991739c9437088 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Wed, 29 Oct 2014 00:17:11 +0000 Subject: Update url setting API to return nserror code instead of calling warn_user --- amiga/gui.c | 5 +++-- atari/gui.c | 6 ++++-- beos/scaffolding.cpp | 4 +++- beos/scaffolding.h | 2 +- cocoa/gui.m | 3 ++- desktop/browser.c | 57 ++++++++++++++++++++++++++------------------------- desktop/browser.h | 2 +- desktop/gui_factory.c | 3 ++- desktop/gui_window.h | 2 +- framebuffer/gui.c | 3 ++- gtk/scaffolding.c | 14 ++++++++----- gtk/scaffolding.h | 2 +- monkey/browser.c | 3 ++- riscos/window.c | 11 +++++----- riscos/window.h | 2 +- windows/gui.c | 13 ++++++++---- 16 files changed, 76 insertions(+), 56 deletions(-) diff --git a/amiga/gui.c b/amiga/gui.c index 9ee209efa..4788a08b0 100644 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -4774,12 +4774,11 @@ static void gui_window_set_status(struct gui_window *g, const char *text) } } -static void gui_window_set_url(struct gui_window *g, const char *url) +static nserror gui_window_set_url(struct gui_window *g, const char *url) { int cur_tab = 0; if(!g) return; - if(!url) return; if(g->tab_node && (g->shared->tabs > 1)) GetAttr(CLICKTAB_Current, g->shared->objects[GID_TABS], (ULONG *)&cur_tab); @@ -4791,6 +4790,8 @@ static void gui_window_set_url(struct gui_window *g, const char *url) } ami_update_buttons(g->shared); + + return NSERROR_OK; } diff --git a/atari/gui.c b/atari/gui.c index 7e5207f94..cb071a161 100644 --- a/atari/gui.c +++ b/atari/gui.c @@ -115,7 +115,7 @@ EVMULT_OUT aes_event_out; short aes_msg_out[8]; bool gui_window_get_scroll(struct gui_window *w, int *sx, int *sy); -static void gui_window_set_url(struct gui_window *w, const char *url); +static nserror gui_window_set_url(struct gui_window *w, const char *url); /** * Core atari event processing. @@ -553,7 +553,7 @@ void gui_window_set_pointer(struct gui_window *gw, gui_pointer_shape shape) } -static void gui_window_set_url(struct gui_window *w, const char *url) +static nserror gui_window_set_url(struct gui_window *w, const char *url) { int l; @@ -572,6 +572,8 @@ static void gui_window_set_url(struct gui_window *w, const char *url) if(input_window == w->root->active_gui_window) { toolbar_set_url(w->root->toolbar, url); } + + return NSERROR_OK; } char * gui_window_get_url(struct gui_window *gw) diff --git a/beos/scaffolding.cpp b/beos/scaffolding.cpp index 860c0570d..48cf72ec3 100644 --- a/beos/scaffolding.cpp +++ b/beos/scaffolding.cpp @@ -2166,7 +2166,7 @@ void gui_window_set_status(struct gui_window *_g, const char *text) g->top_view->UnlockLooper(); } -void gui_window_set_url(struct gui_window *_g, const char *url) +nserror gui_window_set_url(struct gui_window *_g, const char *url) { struct beos_scaffolding *g = nsbeos_get_scaffold(_g); if (g->top_level != _g) return; @@ -2178,6 +2178,8 @@ void gui_window_set_url(struct gui_window *_g, const char *url) g->url_bar->SetText(url); g->top_view->UnlockLooper(); + + return NSERROR_OK; } void gui_window_start_throbber(struct gui_window* _g) diff --git a/beos/scaffolding.h b/beos/scaffolding.h index 78ba14222..c732bc9ed 100644 --- a/beos/scaffolding.h +++ b/beos/scaffolding.h @@ -200,7 +200,7 @@ void nsbeos_scaffolding_destroy(nsbeos_scaffolding *scaffold); void nsbeos_scaffolding_popup_menu(nsbeos_scaffolding *g, BPoint where); void gui_window_set_title(struct gui_window *_g, const char *title); -void gui_window_set_url(struct gui_window *_g, const char *url); +nserror gui_window_set_url(struct gui_window *_g, const char *url); void gui_window_set_icon(struct gui_window *_g, hlcache_handle *icon); void gui_window_set_status(struct gui_window *_g, const char *text); void gui_window_start_throbber(struct gui_window* _g); diff --git a/cocoa/gui.m b/cocoa/gui.m index 28e68e9f7..c9cef1508 100644 --- a/cocoa/gui.m +++ b/cocoa/gui.m @@ -194,9 +194,10 @@ static void gui_window_set_pointer(struct gui_window *g, gui_pointer_shape shape } } -static void gui_window_set_url(struct gui_window *g, const char *url) +static nserror gui_window_set_url(struct gui_window *g, const char *url) { [(BrowserViewController *)g setUrl: [NSString stringWithUTF8String: url]]; + return NSERROR_OK; } static void gui_window_start_throbber(struct gui_window *g) diff --git a/desktop/browser.c b/desktop/browser.c index 315859aeb..e6fc2f794 100644 --- a/desktop/browser.c +++ b/desktop/browser.c @@ -769,7 +769,6 @@ nserror browser_window_create(enum browser_window_create_flags flags, if ((ret = calloc(1, sizeof(struct browser_window))) == NULL) { - warn_user("NoMemory", 0); return NSERROR_NOMEM; } @@ -1784,18 +1783,18 @@ static void browser_window_destroy_internal(struct browser_window *bw) * \param bw Browser window to update URL bar for. * \param url URL for content displayed by bw including any fragment. */ -static inline void browser_window_refresh_url_bar_internal( - struct browser_window *bw, nsurl *url) +static inline nserror +browser_window_refresh_url_bar_internal(struct browser_window *bw, nsurl *url) { assert(bw); assert(url); - if (bw->parent != NULL) { - /* Not root window; don't set a URL in GUI URL bar */ - return; + if ((bw->parent != NULL) || (bw->window == NULL)) { + /* Not root window or no gui window so do not set a URL */ + return NSERROR_OK; } - guit->window->set_url(bw->window, nsurl_access(url)); + return guit->window->set_url(bw->window, nsurl_access(url)); } @@ -1811,39 +1810,38 @@ void browser_window_destroy(struct browser_window *bw) } /* exported interface, documented in desktop/browser.h */ -void browser_window_refresh_url_bar(struct browser_window *bw) +nserror browser_window_refresh_url_bar(struct browser_window *bw) { + nserror ret; + nsurl *display_url; + assert(bw); if (bw->parent != NULL) { /* Not root window; don't set a URL in GUI URL bar */ - return; + return NSERROR_OK; } if (bw->current_content == NULL) { - /* TODO: set "about:blank"? */ - return; - } - - if (bw->frag_id == NULL) { - browser_window_refresh_url_bar_internal(bw, + /* no content so return about:blank */ + ret = browser_window_refresh_url_bar_internal(bw, + corestring_nsurl_about_blank); + } else if (bw->frag_id == NULL) { + ret = browser_window_refresh_url_bar_internal(bw, hlcache_handle_get_url(bw->current_content)); } else { - nsurl *display_url; - nserror error; - /* Combine URL and Fragment */ - error = nsurl_refragment( + ret = nsurl_refragment( hlcache_handle_get_url(bw->current_content), bw->frag_id, &display_url); - if (error != NSERROR_OK) { - warn_user("NoMemory", 0); - return; + if (ret == NSERROR_OK) { + ret = browser_window_refresh_url_bar_internal(bw, + display_url); + nsurl_unref(display_url); } - - browser_window_refresh_url_bar_internal(bw, display_url); - nsurl_unref(display_url); } + + return ret; } @@ -1989,11 +1987,13 @@ nserror browser_window_navigate(struct browser_window *bw, case NSERROR_OK: bw->loading_content = c; browser_window_start_throbber(bw); - browser_window_refresh_url_bar_internal(bw, url); + error = browser_window_refresh_url_bar_internal(bw, url); break; case NSERROR_NO_FETCH_HANDLER: /* no handler for this type */ - /** @todo does this always try and download even unverifiable content? */ + /** \todo does this always try and download even + * unverifiable content? + */ error = guit->browser->launch_url(url); break; @@ -2098,7 +2098,8 @@ const char* browser_window_get_title(struct browser_window *bw) return content_get_title(bw->current_content); } - return NULL; + /* no content so return about:blank */ + return nsurl_access(corestring_nsurl_about_blank); } /* Exported interface, documented in browser.h */ diff --git a/desktop/browser.h b/desktop/browser.h index 29a8736d2..5a1d70d7b 100644 --- a/desktop/browser.h +++ b/desktop/browser.h @@ -357,7 +357,7 @@ void browser_window_set_gadget_filename(struct browser_window *bw, * * \param bw Browser window to update URL bar for. */ -void browser_window_refresh_url_bar(struct browser_window *bw); +nserror browser_window_refresh_url_bar(struct browser_window *bw); /** * Handle mouse clicks in a browser window. diff --git a/desktop/gui_factory.c b/desktop/gui_factory.c index b69700fca..e26eccb2d 100644 --- a/desktop/gui_factory.c +++ b/desktop/gui_factory.c @@ -42,8 +42,9 @@ static void gui_default_window_set_title(struct gui_window *g, const char *title { } -static void gui_default_window_set_url(struct gui_window *g, const char *url) +static nserror gui_default_window_set_url(struct gui_window *g, const char *url) { + return NSERROR_OK; } static void gui_default_window_start_throbber(struct gui_window *g) diff --git a/desktop/gui_window.h b/desktop/gui_window.h index e503d4b86..38432f567 100644 --- a/desktop/gui_window.h +++ b/desktop/gui_window.h @@ -184,7 +184,7 @@ struct gui_window_table { * \param gw window to update. * \param url The url to use as icon. */ - void (*set_url)(struct gui_window *gw, const char *url); + nserror (*set_url)(struct gui_window *gw, const char *url); /** * Set a favicon for a gui window. diff --git a/framebuffer/gui.c b/framebuffer/gui.c index 180c2614e..0ee60c944 100644 --- a/framebuffer/gui.c +++ b/framebuffer/gui.c @@ -1896,10 +1896,11 @@ gui_window_set_pointer(struct gui_window *g, gui_pointer_shape shape) } } -static void +static nserror gui_window_set_url(struct gui_window *g, const char *url) { fbtk_set_text(g->url, url); + return NSERROR_OK; } static void diff --git a/gtk/scaffolding.c b/gtk/scaffolding.c index 0fa247030..571ba93e9 100644 --- a/gtk/scaffolding.c +++ b/gtk/scaffolding.c @@ -2309,12 +2309,16 @@ void gui_window_set_title(struct gui_window *gw, const char *title) } -void gui_window_set_url(struct gui_window *_g, const char *url) +nserror gui_window_set_url(struct gui_window *gw, const char *url) { - struct nsgtk_scaffolding *g = nsgtk_get_scaffold(_g); - if (g->top_level != _g) return; - gtk_entry_set_text(GTK_ENTRY(g->url_bar), url); - gtk_editable_set_position(GTK_EDITABLE(g->url_bar), -1); + struct nsgtk_scaffolding *g; + + g = nsgtk_get_scaffold(gw); + if (g->top_level == gw) { + gtk_entry_set_text(GTK_ENTRY(g->url_bar), url); + gtk_editable_set_position(GTK_EDITABLE(g->url_bar), -1); + } + return NSERROR_OK; } void gui_window_start_throbber(struct gui_window* _g) diff --git a/gtk/scaffolding.h b/gtk/scaffolding.h index e7d945ebc..07433bffa 100644 --- a/gtk/scaffolding.h +++ b/gtk/scaffolding.h @@ -235,7 +235,7 @@ nserror nsgtk_scaffolding_new_tab(struct gui_window *gw); /* core acessors */ void gui_window_set_title(struct gui_window *g, const char *title); -void gui_window_set_url(struct gui_window *g, const char *url); +nserror gui_window_set_url(struct gui_window *g, const char *url); void gui_window_start_throbber(struct gui_window *g); void gui_window_stop_throbber(struct gui_window *g); diff --git a/monkey/browser.c b/monkey/browser.c index 06517e023..1ebdaecf9 100644 --- a/monkey/browser.c +++ b/monkey/browser.c @@ -251,10 +251,11 @@ gui_window_set_pointer(struct gui_window *g, gui_pointer_shape shape) fprintf(stdout, "WINDOW SET_POINTER WIN %u POINTER %s\n", g->win_num, ptr_name); } -static void +static nserror gui_window_set_url(struct gui_window *g, const char *url) { fprintf(stdout, "WINDOW SET_URL WIN %u URL %s\n", g->win_num, url); + return NSERROR_OK; } static bool diff --git a/riscos/window.c b/riscos/window.c index b7cb6e80c..6a62d560c 100644 --- a/riscos/window.c +++ b/riscos/window.c @@ -1052,13 +1052,14 @@ void gui_window_set_pointer(struct gui_window *g, gui_pointer_shape shape) /* exported function documented in riscos/window.h */ -void gui_window_set_url(struct gui_window *g, const char *url) +nserror gui_window_set_url(struct gui_window *g, const char *url) { - if (!g->toolbar) - return; + if (g->toolbar) { + ro_toolbar_set_url(g->toolbar, url, true, false); + ro_gui_url_complete_start(g->toolbar); + } - ro_toolbar_set_url(g->toolbar, url, true, false); - ro_gui_url_complete_start(g->toolbar); + return NSERROR_OK; } diff --git a/riscos/window.h b/riscos/window.h index c4daf8bb8..ea31fcb9b 100644 --- a/riscos/window.h +++ b/riscos/window.h @@ -39,7 +39,7 @@ bool ro_gui_window_check_menu(wimp_menu *menu); * \param g gui_window to update * \param url new url for address bar */ -void gui_window_set_url(struct gui_window *g, const char *url); +nserror gui_window_set_url(struct gui_window *g, const char *url); #endif diff --git a/windows/gui.c b/windows/gui.c index 3804b18b1..cc0c05699 100644 --- a/windows/gui.c +++ b/windows/gui.c @@ -760,6 +760,8 @@ nsws_window_command(HWND hwnd, int identifier, HWND ctrl_window) { + nserror ret; + LOG(("notification_code %x identifier %x ctrl_window %p", notification_code, identifier, ctrl_window)); @@ -781,11 +783,14 @@ nsws_window_command(HWND hwnd, break; case IDM_FILE_OPEN_WINDOW: - browser_window_create(BW_CREATE_NONE, + ret = browser_window_create(BW_CREATE_NONE, NULL, NULL, gw->bw, NULL); + if (ret != NSERROR_OK) { + warn_user(messages_get_errorcode(ret), 0); + } break; case IDM_FILE_CLOSE_WINDOW: @@ -1657,11 +1662,11 @@ struct nsws_pointers *nsws_get_pointers(void) return &nsws_pointer; } -static void gui_window_set_url(struct gui_window *w, const char *url) +static nserror gui_window_set_url(struct gui_window *w, const char *url) { - if (w == NULL) - return; SendMessage(w->urlbar, WM_SETTEXT, 0, (LPARAM) url); + + return NSERROR_OK; } -- cgit v1.2.3