diff options
author | Vincent Sanders <vince@netsurf-browser.org> | 2014-01-16 13:37:14 +0000 |
---|---|---|
committer | Vincent Sanders <vince@netsurf-browser.org> | 2014-01-16 13:37:14 +0000 |
commit | a1361f22b43e78b00cdddab3a0a2b9e4871965f7 (patch) | |
tree | 0d7a34e8035a06a8cbffa9678ad8689f953281d2 /riscos | |
parent | 444d3ac94a1d19a30963c38ad605deec778f3c27 (diff) | |
parent | a2247a75a3dab9d583617299a88d0e76c923f83b (diff) | |
download | netsurf-a1361f22b43e78b00cdddab3a0a2b9e4871965f7.tar.gz netsurf-a1361f22b43e78b00cdddab3a0a2b9e4871965f7.tar.bz2 |
Merge branch 'vince/guivtable'
Diffstat (limited to 'riscos')
-rw-r--r-- | riscos/401login.c | 1 | ||||
-rw-r--r-- | riscos/download.c | 17 | ||||
-rw-r--r-- | riscos/gui.c | 191 | ||||
-rw-r--r-- | riscos/gui.h | 14 | ||||
-rw-r--r-- | riscos/print.c | 1 | ||||
-rw-r--r-- | riscos/query.h | 4 | ||||
-rw-r--r-- | riscos/save.c | 4 | ||||
-rw-r--r-- | riscos/save.h | 3 | ||||
-rw-r--r-- | riscos/textselection.c | 14 | ||||
-rw-r--r-- | riscos/textselection.h | 2 | ||||
-rw-r--r-- | riscos/window.c | 149 | ||||
-rw-r--r-- | riscos/window.h | 2 |
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); |