summaryrefslogtreecommitdiff
path: root/riscos
diff options
context:
space:
mode:
authorVincent Sanders <vince@netsurf-browser.org>2014-01-16 13:37:14 +0000
committerVincent Sanders <vince@netsurf-browser.org>2014-01-16 13:37:14 +0000
commita1361f22b43e78b00cdddab3a0a2b9e4871965f7 (patch)
tree0d7a34e8035a06a8cbffa9678ad8689f953281d2 /riscos
parent444d3ac94a1d19a30963c38ad605deec778f3c27 (diff)
parenta2247a75a3dab9d583617299a88d0e76c923f83b (diff)
downloadnetsurf-a1361f22b43e78b00cdddab3a0a2b9e4871965f7.tar.gz
netsurf-a1361f22b43e78b00cdddab3a0a2b9e4871965f7.tar.bz2
Merge branch 'vince/guivtable'
Diffstat (limited to 'riscos')
-rw-r--r--riscos/401login.c1
-rw-r--r--riscos/download.c17
-rw-r--r--riscos/gui.c191
-rw-r--r--riscos/gui.h14
-rw-r--r--riscos/print.c1
-rw-r--r--riscos/query.h4
-rw-r--r--riscos/save.c4
-rw-r--r--riscos/save.h3
-rw-r--r--riscos/textselection.c14
-rw-r--r--riscos/textselection.h2
-rw-r--r--riscos/window.c149
-rw-r--r--riscos/window.h2
12 files changed, 225 insertions, 177 deletions
diff --git a/riscos/401login.c b/riscos/401login.c
index 6740f54e5..e6772b820 100644
--- a/riscos/401login.c
+++ b/riscos/401login.c
@@ -27,7 +27,6 @@
#include "content/hlcache.h"
#include "content/urldb.h"
#include "desktop/browser.h"
-#include "desktop/401login.h"
#include "desktop/gui.h"
#include "riscos/dialog.h"
#include "riscos/wimp_event.h"
diff --git a/riscos/download.c b/riscos/download.c
index ebd981dca..3a02c9c90 100644
--- a/riscos/download.c
+++ b/riscos/download.c
@@ -215,7 +215,7 @@ const char *ro_gui_download_temp_name(struct gui_download_window *dw)
* reported
*/
-struct gui_download_window *gui_download_window_create(download_context *ctx,
+static struct gui_download_window *gui_download_window_create(download_context *ctx,
struct gui_window *gui)
{
const char *url = download_context_get_url(ctx);
@@ -445,7 +445,7 @@ struct gui_download_window *gui_download_window_create(download_context *ctx,
* \return NSERROR_OK on success, appropriate error otherwise
*/
-nserror gui_download_window_data(struct gui_download_window *dw,
+static nserror gui_download_window_data(struct gui_download_window *dw,
const char *data, unsigned int size)
{
while (true) {
@@ -714,7 +714,7 @@ void ro_gui_download_window_hide_caret(struct gui_download_window *dw)
* \param error_msg error message
*/
-void gui_download_window_error(struct gui_download_window *dw,
+static void gui_download_window_error(struct gui_download_window *dw,
const char *error_msg)
{
os_error *error;
@@ -766,7 +766,7 @@ void gui_download_window_error(struct gui_download_window *dw,
* \param dw download window
*/
-void gui_download_window_done(struct gui_download_window *dw)
+static void gui_download_window_done(struct gui_download_window *dw)
{
os_error *error;
@@ -1631,3 +1631,12 @@ bool ro_gui_download_prequit(void)
}
return true;
}
+
+static struct gui_download_table download_table = {
+ .create = gui_download_window_create,
+ .data = gui_download_window_data,
+ .error = gui_download_window_error,
+ .done = gui_download_window_done,
+};
+
+struct gui_download_table *riscos_download_table = &download_table;
diff --git a/riscos/gui.c b/riscos/gui.c
index ae5ea383e..f7dc6c962 100644
--- a/riscos/gui.c
+++ b/riscos/gui.c
@@ -252,7 +252,7 @@ static void ro_msg_save_desktop(wimp_message *message);
static void ro_msg_window_info(wimp_message *message);
static void ro_gui_view_source_bounce(wimp_message *message);
-nsurl *gui_get_resource_url(const char *path)
+static nsurl *gui_get_resource_url(const char *path)
{
static const char base_url[] = "file:///NetSurf:/Resources/";
size_t path_len, length;
@@ -837,89 +837,13 @@ static bool nslog_stream_configure(FILE *fptr)
return true;
}
-/** Normal entry point from OS */
-int main(int argc, char** argv)
-{
- char path[40];
- int length;
- char logging_env[2];
- os_var_type type;
- int used = -1; /* slightly better with older OSLib versions */
- os_error *error;
- nserror ret;
-
- /* Consult NetSurf$Logging environment variable to decide if logging
- * is required. */
- error = xos_read_var_val_size("NetSurf$Logging", 0, os_VARTYPE_STRING,
- &used, NULL, &type);
- if (error != NULL || type != os_VARTYPE_STRING || used != -2) {
- verbose_log = true;
- } else {
- error = xos_read_var_val("NetSurf$Logging", logging_env,
- sizeof(logging_env), 0, os_VARTYPE_STRING,
- &used, NULL, &type);
- if (error != NULL || logging_env[0] != '0') {
- verbose_log = true;
- } else {
- verbose_log = false;
- }
- }
-
- /* initialise logging. Not fatal if it fails but not much we
- * can do about it either.
- */
- nslog_init(nslog_stream_configure, &argc, argv);
-
- /* user options setup */
- ret = nsoption_init(set_defaults, &nsoptions, &nsoptions_default);
- if (ret != NSERROR_OK) {
- die("Options failed to initialise");
- }
- nsoption_read("NetSurf:Choices", NULL);
- nsoption_commandline(&argc, argv, NULL);
-
- /* Choose the interface language to use */
- ro_gui_choose_language();
-
- /* select language-specific Messages */
- if (((length = snprintf(path,
- sizeof(path),
- "NetSurf:Resources.%s.Messages",
- nsoption_charp(language))) < 0) ||
- (length >= (int)sizeof(path))) {
- die("Failed to locate Messages resource.");
- }
-
- /* common initialisation */
- ret = netsurf_init(path);
- if (ret != NSERROR_OK) {
- die("NetSurf failed to initialise");
- }
-
- artworks_init();
- draw_init();
- sprite_init();
-
- /* Load some extra RISC OS specific Messages */
- messages_load("NetSurf:Resources.LangNames");
-
- gui_init(argc, argv);
-
- gui_init2(argc, argv);
-
- netsurf_main_loop();
-
- netsurf_exit();
-
- return 0;
-}
/**
* Close down the gui (RISC OS).
*/
-void gui_quit(void)
+static void gui_quit(void)
{
urldb_save_cookies(nsoption_charp(cookie_jar));
urldb_save(nsoption_charp(url_save));
@@ -1024,7 +948,7 @@ void ro_gui_cleanup(void)
* \param active return as soon as possible
*/
-void gui_poll(bool active)
+static void gui_poll(bool active)
{
wimp_event_no event;
wimp_block block;
@@ -2263,7 +2187,7 @@ void ro_gui_dump_browser_window(struct browser_window *bw)
* Broadcast an URL that we can't handle.
*/
-void gui_launch_url(const char *url)
+static void gui_launch_url(const char *url)
{
/* Try ant broadcast first */
ro_url_broadcast(url);
@@ -2364,7 +2288,7 @@ void PDF_Password(char **owner_pass, char **user_pass, char *path)
* \return filename (will be freed with free())
*/
-char *filename_from_path(char *path)
+static char *filename_from_path(char *path)
{
char *leafname;
char *temp;
@@ -2402,7 +2326,7 @@ char *filename_from_path(char *path)
* \return true on success
*/
-bool path_add_part(char *path, int length, const char *newpart)
+static bool path_add_part(char *path, int length, const char *newpart)
{
size_t path_len = strlen(path);
@@ -2424,10 +2348,103 @@ bool path_add_part(char *path, int length, const char *newpart)
return true;
}
-void gui_file_gadget_open(struct gui_window *g, hlcache_handle *hl,
- struct form_control *gadget)
+static struct gui_clipboard_table riscos_clipboard_table = {
+ .get = gui_get_clipboard,
+ .set = gui_set_clipboard,
+};
+
+static struct gui_browser_table riscos_browser_table = {
+ .poll = gui_poll,
+ .quit = gui_quit,
+ .get_resource_url = gui_get_resource_url,
+ .launch_url = gui_launch_url,
+ .create_form_select_menu = gui_create_form_select_menu,
+ .cert_verify = gui_cert_verify,
+ .filename_from_path = filename_from_path,
+ .path_add_part = path_add_part,
+ .login = gui_401login_open,
+};
+
+
+/** Normal entry point from OS */
+int main(int argc, char** argv)
{
- LOG(("File open dialog rquest for %p/%p", g, gadget));
- /* browser_window_set_gadget_filename(bw, gadget, "filename"); */
-}
+ char path[40];
+ int length;
+ char logging_env[2];
+ os_var_type type;
+ int used = -1; /* slightly better with older OSLib versions */
+ os_error *error;
+ nserror ret;
+ struct gui_table riscos_gui_table = {
+ .browser = &riscos_browser_table,
+ .window = riscos_window_table,
+ .clipboard = &riscos_clipboard_table,
+ .download = riscos_download_table,
+ };
+ /* Consult NetSurf$Logging environment variable to decide if logging
+ * is required. */
+ error = xos_read_var_val_size("NetSurf$Logging", 0, os_VARTYPE_STRING,
+ &used, NULL, &type);
+ if (error != NULL || type != os_VARTYPE_STRING || used != -2) {
+ verbose_log = true;
+ } else {
+ error = xos_read_var_val("NetSurf$Logging", logging_env,
+ sizeof(logging_env), 0, os_VARTYPE_STRING,
+ &used, NULL, &type);
+ if (error != NULL || logging_env[0] != '0') {
+ verbose_log = true;
+ } else {
+ verbose_log = false;
+ }
+ }
+
+ /* initialise logging. Not fatal if it fails but not much we
+ * can do about it either.
+ */
+ nslog_init(nslog_stream_configure, &argc, argv);
+
+ /* user options setup */
+ ret = nsoption_init(set_defaults, &nsoptions, &nsoptions_default);
+ if (ret != NSERROR_OK) {
+ die("Options failed to initialise");
+ }
+ nsoption_read("NetSurf:Choices", NULL);
+ nsoption_commandline(&argc, argv, NULL);
+
+ /* Choose the interface language to use */
+ ro_gui_choose_language();
+
+ /* select language-specific Messages */
+ if (((length = snprintf(path,
+ sizeof(path),
+ "NetSurf:Resources.%s.Messages",
+ nsoption_charp(language))) < 0) ||
+ (length >= (int)sizeof(path))) {
+ die("Failed to locate Messages resource.");
+ }
+
+ /* common initialisation */
+ ret = netsurf_init(path, &riscos_gui_table);
+ if (ret != NSERROR_OK) {
+ die("NetSurf failed to initialise");
+ }
+
+ artworks_init();
+ draw_init();
+ sprite_init();
+
+ /* Load some extra RISC OS specific Messages */
+ messages_load("NetSurf:Resources.LangNames");
+
+ gui_init(argc, argv);
+
+ gui_init2(argc, argv);
+
+ netsurf_main_loop();
+
+ netsurf_exit();
+
+ return 0;
+}
diff --git a/riscos/gui.h b/riscos/gui.h
index 827af8108..89a539300 100644
--- a/riscos/gui.h
+++ b/riscos/gui.h
@@ -123,9 +123,12 @@ const char *ro_gui_default_language(void);
void ro_gui_download_init(void);
void ro_gui_download_datasave_ack(wimp_message *message);
bool ro_gui_download_prequit(void);
+extern struct gui_download_table *riscos_download_table;
/* in 401login.c */
void ro_gui_401login_init(void);
+void gui_401login_open(nsurl *url, const char *realm,
+ nserror (*cb)(bool proceed, void *pw), void *cbpw);
/* in window.c */
bool ro_gui_window_dataload(struct gui_window *g, wimp_message *message);
@@ -154,6 +157,8 @@ browser_mouse_state ro_gui_mouse_drag_state(wimp_mouse_state buttons,
bool ro_gui_shift_pressed(void);
bool ro_gui_ctrl_pressed(void);
bool ro_gui_alt_pressed(void);
+void gui_window_set_pointer(struct gui_window *g, gui_pointer_shape shape);
+void gui_create_form_select_menu(struct browser_window *bw, struct form_control *control);
/* in history.c */
void ro_gui_history_init(void);
@@ -199,6 +204,15 @@ extern int ro_plot_origin_y;
/* in theme_install.c */
bool ro_gui_theme_install_apply(wimp_w w);
+/* in textselection.c */
+void gui_get_clipboard(char **buffer, size_t *length);
+void gui_set_clipboard(const char *buffer, size_t length, nsclipboard_styles styles[], int n_styles);
+
+/* in sslcert.c */
+void gui_cert_verify(nsurl *url,
+ const struct ssl_cert_info *certs, unsigned long num,
+ nserror (*cb)(bool proceed, void *pw), void *cbpw);
+
/* icon numbers */
#define ICON_STATUS_RESIZE 0
#define ICON_STATUS_TEXT 1
diff --git a/riscos/print.c b/riscos/print.c
index 0df77ef6b..09d4aaefb 100644
--- a/riscos/print.c
+++ b/riscos/print.c
@@ -90,6 +90,7 @@ static unsigned int print_fonts_count;
/** Error in print_fonts_plot_text() or print_fonts_callback(). */
static const char *print_fonts_error;
+void gui_window_redraw_window(struct gui_window *g);
static bool ro_gui_print_click(wimp_pointer *pointer);
static bool ro_gui_print_apply(wimp_w w);
diff --git a/riscos/query.h b/riscos/query.h
index 92e3e292e..10a67e73b 100644
--- a/riscos/query.h
+++ b/riscos/query.h
@@ -29,4 +29,8 @@ query_id query_user_xy(const char *query, const char *detail,
void ro_gui_query_init(void);
void ro_gui_query_window_bring_to_front(query_id id);
+query_id query_user(const char *query, const char *detail,
+ const query_callback *cb, void *pw, const char *yes, const char *no);
+void query_close(query_id);
+
#endif
diff --git a/riscos/save.c b/riscos/save.c
index 4d1740397..59222c49a 100644
--- a/riscos/save.c
+++ b/riscos/save.c
@@ -357,8 +357,8 @@ bool ro_gui_save_ok(wimp_w w)
* \param g gui window
*/
-void gui_drag_save_object(gui_save_type save_type, hlcache_handle *c,
- struct gui_window *g)
+void gui_drag_save_object(struct gui_window *g, hlcache_handle *c,
+ gui_save_type save_type)
{
wimp_pointer pointer;
char icon_buf[20];
diff --git a/riscos/save.h b/riscos/save.h
index 34a4a6ba9..0c917664a 100644
--- a/riscos/save.h
+++ b/riscos/save.h
@@ -27,6 +27,9 @@
#include "oslib/wimp.h"
#include "desktop/gui.h"
+void gui_drag_save_object(struct gui_window *g, hlcache_handle *c, gui_save_type save_type);
+void gui_drag_save_selection(struct gui_window *g, const char *selection);
+
wimp_w ro_gui_saveas_create(const char *template_name);
void ro_gui_saveas_quit(void);
void ro_gui_save_prepare(gui_save_type save_type, struct hlcache_handle *h,
diff --git a/riscos/textselection.c b/riscos/textselection.c
index ab8ea5c3a..73b5246e3 100644
--- a/riscos/textselection.c
+++ b/riscos/textselection.c
@@ -186,20 +186,6 @@ static void ro_gui_selection_drag_end(wimp_dragged *drag, void *data)
browser_window_mouse_track(g->bw, 0, pos.x, pos.y);
}
-
-/**
- * Perform tasks after a selection has been cleared.
- *
- * \param g gui window
- */
-
-void gui_clear_selection(struct gui_window *g)
-{
- /* Refresh any open menu, in case it's the browser window menu. */
- ro_gui_menu_refresh(0);
-}
-
-
/**
* Core tells front end to put given text in clipboard
*
diff --git a/riscos/textselection.h b/riscos/textselection.h
index c6f96f0e9..a4f436ddc 100644
--- a/riscos/textselection.h
+++ b/riscos/textselection.h
@@ -26,6 +26,8 @@
#include "oslib/wimp.h"
#include "desktop/gui.h"
+void gui_start_selection(struct gui_window *g);
+
typedef void (*ro_gui_selection_prepare_paste_cb)(void *pw);
void ro_gui_selection_prepare_paste(wimp_w w,
diff --git a/riscos/window.c b/riscos/window.c
index c08f0277b..0d31b663a 100644
--- a/riscos/window.c
+++ b/riscos/window.c
@@ -89,6 +89,7 @@
#include "utils/utils.h"
#include "utils/messages.h"
+void gui_window_redraw_window(struct gui_window *g);
static void gui_window_set_extent(struct gui_window *g, int width, int height);
@@ -372,6 +373,30 @@ void ro_gui_window_initialise(void)
*/
/**
+ * Place the caret in a browser window.
+ *
+ * \param g window with caret
+ * \param x coordinates of caret
+ * \param y coordinates of caret
+ * \param height height of caret
+ * \param clip clip rectangle, or NULL if none
+ */
+
+static void gui_window_place_caret(struct gui_window *g, int x, int y, int height,
+ const struct rect *clip)
+{
+ os_error *error;
+
+ error = xwimp_set_caret_position(g->window, -1,
+ x * 2, -(y + height) * 2, height * 2, -1);
+ if (error) {
+ LOG(("xwimp_set_caret_position: 0x%x: %s",
+ error->errnum, error->errmess));
+ warn_user("WimpError", error->errmess);
+ }
+}
+
+/**
* Create and open a new browser window.
*
* \param bw browser_window structure to update
@@ -379,7 +404,7 @@ void ro_gui_window_initialise(void)
* \return gui_window, or 0 on error and error reported
*/
-struct gui_window *gui_create_browser_window(struct browser_window *bw,
+static struct gui_window *gui_window_create(struct browser_window *bw,
struct browser_window *clone, bool new_tab)
{
int screen_width, screen_height, win_width, win_height, scroll_width;
@@ -600,7 +625,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
* \param g gui_window to destroy
*/
-void gui_window_destroy(struct gui_window *g)
+static void gui_window_destroy(struct gui_window *g)
{
os_error *error;
wimp_w w;
@@ -651,7 +676,7 @@ void gui_window_destroy(struct gui_window *g)
* \param title new window title, copied
*/
-void gui_window_set_title(struct gui_window *g, const char *title)
+static void gui_window_set_title(struct gui_window *g, const char *title)
{
int scale_disp;
@@ -710,7 +735,7 @@ void gui_window_redraw_window(struct gui_window *g)
* \param data content_msg_data union with filled in redraw data
*/
-void gui_window_update_box(struct gui_window *g, const struct rect *rect)
+static void gui_window_update_box(struct gui_window *g, const struct rect *rect)
{
bool use_buffer;
int x0, y0, x1, y1;
@@ -765,7 +790,7 @@ void gui_window_update_box(struct gui_window *g, const struct rect *rect)
* \return true iff successful
*/
-bool gui_window_get_scroll(struct gui_window *g, int *sx, int *sy)
+static bool gui_window_get_scroll(struct gui_window *g, int *sx, int *sy)
{
wimp_window_state state;
os_error *error;
@@ -798,7 +823,7 @@ bool gui_window_get_scroll(struct gui_window *g, int *sx, int *sy)
* \param sy point to place at top-left of window
*/
-void gui_window_set_scroll(struct gui_window *g, int sx, int sy)
+static void gui_window_set_scroll(struct gui_window *g, int sx, int sy)
{
wimp_window_state state;
os_error *error;
@@ -831,7 +856,7 @@ void gui_window_set_scroll(struct gui_window *g, int sx, int sy)
* \param x1 right point to ensure visible
* \param y1 top point to ensure visible
*/
-void gui_window_scroll_visible(struct gui_window *g, int x0, int y0, int x1, int y1)
+static void gui_window_scroll_visible(struct gui_window *g, int x0, int y0, int x1, int y1)
{
wimp_window_state state;
os_error *error;
@@ -915,7 +940,7 @@ void gui_window_scroll_visible(struct gui_window *g, int x0, int y0, int x1, int
* \param scaled whether to return scaled values
*/
-void gui_window_get_dimensions(struct gui_window *g, int *width, int *height, bool scaled)
+static void gui_window_get_dimensions(struct gui_window *g, int *width, int *height, bool scaled)
{
/* use the cached window sizes */
*width = g->old_width / 2;
@@ -934,7 +959,7 @@ void gui_window_get_dimensions(struct gui_window *g, int *width, int *height, bo
* \param g gui_window to update the extent of
*/
-void gui_window_update_extent(struct gui_window *g)
+static void gui_window_update_extent(struct gui_window *g)
{
os_error *error;
wimp_window_info info;
@@ -986,7 +1011,7 @@ void gui_window_update_extent(struct gui_window *g)
* \param text new status text
*/
-void gui_window_set_status(struct gui_window *g, const char *text)
+static void gui_window_set_status(struct gui_window *g, const char *text)
{
if (g->status_bar)
ro_gui_status_bar_set_text(g->status_bar, text);
@@ -1038,30 +1063,13 @@ void gui_window_set_pointer(struct gui_window *g, gui_pointer_shape shape)
/**
- * Remove the mouse pointer from the screen
- */
-
-void gui_window_hide_pointer(struct gui_window *g)
-{
- os_error *error;
-
- error = xwimpspriteop_set_pointer_shape(NULL, 0x30, 0, 0, 0, 0);
- if (error) {
- LOG(("xwimpspriteop_set_pointer_shape: 0x%x: %s",
- error->errnum, error->errmess));
- warn_user("WimpError", error->errmess);
- }
-}
-
-
-/**
* Set the contents of a window's address bar.
*
* \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)
+static void gui_window_set_url(struct gui_window *g, const char *url)
{
if (!g->toolbar)
return;
@@ -1077,7 +1085,7 @@ void gui_window_set_url(struct gui_window *g, const char *url)
* \param g window with start of load
*/
-void gui_window_start_throbber(struct gui_window *g)
+static void gui_window_start_throbber(struct gui_window *g)
{
ro_gui_window_update_toolbar_buttons(g);
ro_gui_menu_refresh(ro_gui_browser_window_menu);
@@ -1093,7 +1101,7 @@ void gui_window_start_throbber(struct gui_window *g)
* \param g window with start of load
*/
-void gui_window_stop_throbber(struct gui_window *g)
+static void gui_window_stop_throbber(struct gui_window *g)
{
ro_gui_window_update_toolbar_buttons(g);
ro_gui_menu_refresh(ro_gui_browser_window_menu);
@@ -1105,7 +1113,7 @@ void gui_window_stop_throbber(struct gui_window *g)
* set favicon
*/
-void gui_window_set_icon(struct gui_window *g, hlcache_handle *icon)
+static void gui_window_set_icon(struct gui_window *g, hlcache_handle *icon)
{
if (g == NULL || g->toolbar == NULL)
return;
@@ -1113,38 +1121,6 @@ void gui_window_set_icon(struct gui_window *g, hlcache_handle *icon)
ro_toolbar_set_site_favicon(g->toolbar, icon);
}
-/**
-* set gui display of a retrieved favicon representing the search provider
-* \param ico may be NULL for local calls; then access current cache from
-* search_web_ico()
-*/
-void gui_window_set_search_ico(hlcache_handle *ico)
-{
-}
-
-/**
- * Place the caret in a browser window.
- *
- * \param g window with caret
- * \param x coordinates of caret
- * \param y coordinates of caret
- * \param height height of caret
- * \param clip clip rectangle, or NULL if none
- */
-
-void gui_window_place_caret(struct gui_window *g, int x, int y, int height,
- const struct rect *clip)
-{
- os_error *error;
-
- error = xwimp_set_caret_position(g->window, -1,
- x * 2, -(y + height) * 2, height * 2, -1);
- if (error) {
- LOG(("xwimp_set_caret_position: 0x%x: %s",
- error->errnum, error->errmess));
- warn_user("WimpError", error->errmess);
- }
-}
/**
@@ -1153,7 +1129,7 @@ void gui_window_place_caret(struct gui_window *g, int x, int y, int height,
* \param g window with caret
*/
-void gui_window_remove_caret(struct gui_window *g)
+static void gui_window_remove_caret(struct gui_window *g)
{
wimp_caret caret;
os_error *error;
@@ -1181,7 +1157,7 @@ void gui_window_remove_caret(struct gui_window *g)
* \param g the gui_window that has new content
*/
-void gui_window_new_content(struct gui_window *g)
+static void gui_window_new_content(struct gui_window *g)
{
ro_gui_menu_refresh(ro_gui_browser_window_menu);
ro_gui_window_update_toolbar_buttons(g);
@@ -1193,10 +1169,10 @@ void gui_window_new_content(struct gui_window *g)
/**
* Starts drag scrolling of a browser window
*
- * \param gw gui window
+ * \param g the window to scroll
*/
-bool gui_window_scroll_start(struct gui_window *g)
+static bool gui_window_scroll_start(struct gui_window *g)
{
wimp_window_info_base info;
wimp_pointer pointer;
@@ -1260,7 +1236,7 @@ bool gui_window_scroll_start(struct gui_window *g)
* \return true iff succesful
*/
-bool gui_window_drag_start(struct gui_window *g, gui_drag_type type,
+static bool gui_window_drag_start(struct gui_window *g, gui_drag_type type,
const struct rect *rect)
{
wimp_pointer pointer;
@@ -1319,7 +1295,7 @@ bool gui_window_drag_start(struct gui_window *g, gui_drag_type type,
* \param g gui_window containing the content
* \param c the content to save
*/
-void gui_window_save_link(struct gui_window *g, const char *url,
+static void gui_window_save_link(struct gui_window *g, const char *url,
const char *title)
{
ro_gui_save_prepare(GUI_SAVE_LINK_URL, NULL, NULL, url, title);
@@ -5263,3 +5239,38 @@ bool ro_gui_alt_pressed(void)
xosbyte1(osbyte_SCAN_KEYBOARD, 2 ^ 0x80, 0, &alt);
return (alt == 0xff);
}
+
+static struct gui_window_table gui_window_table = {
+ .create = gui_window_create,
+ .destroy = gui_window_destroy,
+ .redraw = gui_window_redraw_window,
+ .update = gui_window_update_box,
+ .get_scroll = gui_window_get_scroll,
+ .set_scroll = gui_window_set_scroll,
+ .get_dimensions = gui_window_get_dimensions,
+ .update_extent = gui_window_update_extent,
+
+ .set_title = gui_window_set_title,
+ .set_url = gui_window_set_url,
+ .set_icon = gui_window_set_icon,
+ .set_status = gui_window_set_status,
+ .set_pointer = gui_window_set_pointer,
+ .place_caret = gui_window_place_caret,
+ .remove_caret = gui_window_remove_caret,
+ .save_link = gui_window_save_link,
+ .drag_start = gui_window_drag_start,
+ .scroll_visible = gui_window_scroll_visible,
+ .scroll_start = gui_window_scroll_start,
+ .new_content = gui_window_new_content,
+ .start_throbber = gui_window_start_throbber,
+ .stop_throbber = gui_window_stop_throbber,
+
+ /* from save */
+ .drag_save_object = gui_drag_save_object,
+ .drag_save_selection =gui_drag_save_selection,
+
+ /* from textselection */
+ .start_selection = gui_start_selection,
+};
+
+struct gui_window_table *riscos_gui_window_table = &gui_window_table;
diff --git a/riscos/window.h b/riscos/window.h
index adbd999f9..679fa9801 100644
--- a/riscos/window.h
+++ b/riscos/window.h
@@ -25,6 +25,8 @@
#ifndef _NETSURF_RISCOS_WINDOW_H_
#define _NETSURF_RISCOS_WINDOW_H_
+extern struct gui_window_table *riscos_gui_window_table;
+
void ro_gui_window_initialise(void);
bool ro_gui_window_check_menu(wimp_menu *menu);