summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--amiga/gui.c5
-rw-r--r--atari/gui.c6
-rw-r--r--beos/scaffolding.cpp4
-rw-r--r--beos/scaffolding.h2
-rw-r--r--cocoa/gui.m3
-rw-r--r--desktop/browser.c57
-rw-r--r--desktop/browser.h2
-rw-r--r--desktop/gui_factory.c3
-rw-r--r--desktop/gui_window.h2
-rw-r--r--framebuffer/gui.c3
-rw-r--r--gtk/scaffolding.c14
-rw-r--r--gtk/scaffolding.h2
-rw-r--r--monkey/browser.c3
-rw-r--r--riscos/window.c11
-rw-r--r--riscos/window.h2
-rw-r--r--windows/gui.c13
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;
}