Update url setting API to return nserror code instead of calling warn_user

This commit is contained in:
Vincent Sanders 2014-10-29 00:17:11 +00:00
parent 4b941297aa
commit 7ace528729
16 changed files with 76 additions and 56 deletions

View File

@ -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;
}

View File

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

View File

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

View File

@ -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);

View File

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

View File

@ -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 */

View File

@ -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.

View File

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

View File

@ -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.

View File

@ -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

View File

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

View File

@ -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);

View File

@ -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

View File

@ -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;
}

View File

@ -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

View File

@ -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;
}