diff options
-rw-r--r-- | amiga/gui.c | 14 | ||||
-rw-r--r-- | atari/gui.c | 20 | ||||
-rw-r--r-- | beos/gui.cpp | 6 | ||||
-rw-r--r-- | beos/window.cpp | 5 | ||||
-rw-r--r-- | beos/window.h | 6 | ||||
-rw-r--r-- | cocoa/gui.m | 9 | ||||
-rw-r--r-- | desktop/browser.c | 6 | ||||
-rw-r--r-- | desktop/gui.h | 14 | ||||
-rw-r--r-- | desktop/gui_factory.c | 9 | ||||
-rw-r--r-- | framebuffer/gui.c | 16 | ||||
-rw-r--r-- | gtk/gui.c | 6 | ||||
-rw-r--r-- | gtk/window.c | 9 | ||||
-rw-r--r-- | gtk/window.h | 2 | ||||
-rw-r--r-- | monkey/browser.c | 5 | ||||
-rw-r--r-- | monkey/browser.h | 5 | ||||
-rw-r--r-- | monkey/main.c | 8 | ||||
-rw-r--r-- | riscos/gui.c | 6 | ||||
-rw-r--r-- | riscos/window.c | 2 | ||||
-rw-r--r-- | riscos/window.h | 4 | ||||
-rw-r--r-- | windows/gui.c | 20 | ||||
-rw-r--r-- | windows/gui.h | 2 | ||||
-rw-r--r-- | windows/main.c | 5 |
22 files changed, 118 insertions, 61 deletions
diff --git a/amiga/gui.c b/amiga/gui.c index 2037ba41c..3a655f52d 100644 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -3083,8 +3083,10 @@ nserror ami_gui_new_blank_tab(struct gui_window_2 *gwin) return NSERROR_OK; } -struct gui_window *gui_create_browser_window(struct browser_window *bw, - struct browser_window *clone, bool new_tab) +static struct gui_window * +gui_window_create(struct browser_window *bw, + struct browser_window *clone, + bool new_tab) { struct gui_window *g = NULL; bool closegadg=TRUE; @@ -3788,7 +3790,7 @@ void ami_close_all_tabs(struct gui_window_2 *gwin) } } -void gui_window_destroy(struct gui_window *g) +static void gui_window_destroy(struct gui_window *g) { struct Node *ptab; ULONG ptabnum = 0; @@ -5091,8 +5093,10 @@ void gui_file_gadget_open(struct gui_window *g, hlcache_handle *hl, } static struct gui_table ami_gui_table = { - .poll = &gui_poll, - .quit = &gui_quit, + .poll = gui_poll, + .quit = gui_quit, + .window_create = gui_window_create, + .window_destroy = gui_window_destroy, }; /** Normal entry point from OS */ diff --git a/atari/gui.c b/atari/gui.c index a5657368c..3ac267a9b 100644 --- a/atari/gui.c +++ b/atari/gui.c @@ -186,10 +186,10 @@ static void gui_poll(bool active) } -struct gui_window * -gui_create_browser_window(struct browser_window *bw, - struct browser_window *clone, - bool new_tab) { +static struct gui_window * +gui_window_create(struct browser_window *bw, + struct browser_window *clone, + bool new_tab) { struct gui_window *gw=NULL; LOG(( "gw: %p, BW: %p, clone %p, tab: %d\n" , gw, bw, clone, (int)new_tab @@ -233,7 +233,7 @@ gui_create_browser_window(struct browser_window *bw, } -void gui_window_destroy(struct gui_window *w) +static void gui_window_destroy(struct gui_window *w) { if (w == NULL) return; @@ -1101,13 +1101,15 @@ static void gui_init2(int argc, char** argv) void gui_file_gadget_open(struct gui_window *g, hlcache_handle *hl, struct form_control *gadget) { - LOG(("File open dialog rquest for %p/%p", g, gadget)); - /* browser_window_set_gadget_filename(bw, gadget, "filename"); */ + LOG(("File open dialog rquest for %p/%p", g, gadget)); + /* browser_window_set_gadget_filename(bw, gadget, "filename"); */ } static struct gui_table atari_gui_table = { - .poll = &gui_poll, - .quit = &gui_quit, + .poll = gui_poll, + .quit = gui_quit, + .window_create = gui_window_create, + .window_destroy = gui_window_destroy, }; /* #define WITH_DBG_LOGFILE 1 */ diff --git a/beos/gui.cpp b/beos/gui.cpp index 486085de3..22c45598d 100644 --- a/beos/gui.cpp +++ b/beos/gui.cpp @@ -1087,8 +1087,10 @@ void gui_file_gadget_open(struct gui_window *g, hlcache_handle *hl, static struct gui_table beos_gui_table = { - .poll = &gui_poll, - .quit = &gui_quit, + .poll = gui_poll, + .quit = gui_quit, + .window_create = gui_window_create, + .window_destroy = gui_window_destroy, }; diff --git a/beos/window.cpp b/beos/window.cpp index b743ec0c2..e2c17d7e0 100644 --- a/beos/window.cpp +++ b/beos/window.cpp @@ -335,8 +335,9 @@ float nsbeos_get_scale_for_gui(struct gui_window *g) } /* Create a gui_window */ -struct gui_window *gui_create_browser_window(struct browser_window *bw, - struct browser_window *clone, bool new_tab) +struct gui_window *gui_window_create(struct browser_window *bw, + struct browser_window *clone, + bool new_tab) { struct gui_window *g; /**< what we're creating to return */ diff --git a/beos/window.h b/beos/window.h index fc8a4f832..012fbe06f 100644 --- a/beos/window.h +++ b/beos/window.h @@ -61,4 +61,10 @@ void nsbeos_window_destroy_browser(struct gui_window *g); struct browser_window *nsbeos_get_browser_window(struct gui_window *g); + +struct gui_window *gui_window_create(struct browser_window *bw, + struct browser_window *clone, + bool new_tab); +void gui_window_destroy(struct gui_window *g); + #endif /* NETSURF_BEOS_WINDOW_H */ diff --git a/cocoa/gui.m b/cocoa/gui.m index 425bd9cb7..fa80814eb 100644 --- a/cocoa/gui.m +++ b/cocoa/gui.m @@ -70,8 +70,9 @@ static void gui_poll(bool active) struct browser_window; -struct gui_window *gui_create_browser_window(struct browser_window *bw, - struct browser_window *clone, bool new_tab) +static struct gui_window *gui_window_create(struct browser_window *bw, + struct browser_window *clone, + bool new_tab) { BrowserWindowController *window = nil; @@ -93,7 +94,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, return (struct gui_window *)result; } -void gui_window_destroy(struct gui_window *g) +static void gui_window_destroy(struct gui_window *g) { BrowserViewController *vc = (BrowserViewController *)g; @@ -329,6 +330,8 @@ void gui_file_gadget_open(struct gui_window *g, hlcache_handle *hl, static struct gui_table gui_table = { .poll = &gui_poll, + .window_create = gui_window_create, + .window_destroy = gui_window_destroy, }; struct gui_table *cocoa_gui_table = &gui_table; diff --git a/desktop/browser.c b/desktop/browser.c index 6ec31d22f..aceb8fb65 100644 --- a/desktop/browser.c +++ b/desktop/browser.c @@ -732,9 +732,7 @@ browser_window_create(enum browser_window_nav_flags flags, * so find that. */ top = browser_window_get_root(clone); - bw->window = gui_create_browser_window(bw, - top, - ((flags & BROWSER_WINDOW_TAB) != 0)); + bw->window = guit->window_create(bw, top, ((flags & BROWSER_WINDOW_TAB) != 0)); if (bw->window == NULL) { browser_window_destroy(bw); @@ -1644,7 +1642,7 @@ void browser_window_destroy_internal(struct browser_window *bw) if (bw->window) { /* Only the root window has a GUI window */ - gui_window_destroy(bw->window); + guit->window_destroy(bw->window); } if (bw->loading_content != NULL) { diff --git a/desktop/gui.h b/desktop/gui.h index 2bda996fd..940eef0a5 100644 --- a/desktop/gui.h +++ b/desktop/gui.h @@ -75,16 +75,22 @@ struct gui_table { */ void (*poll)(bool active); /* Mandantory */ + /** create a gui window for a browser window */ + struct gui_window *(*window_create)(struct browser_window *bw, + struct browser_window *clone, + bool new_tab); /* Mandantory */ + + /** destroy previously created gui window */ + void (*window_destroy)(struct gui_window *g); /* Mandantory */ + + /** called to allow the gui to cleanup */ - void (*quit)(void); /* optional */ + void (*quit)(void); /* Optional */ }; extern struct gui_table *guit; /* the gui vtable */ -struct gui_window *gui_create_browser_window(struct browser_window *bw, - struct browser_window *clone, bool new_tab); -void gui_window_destroy(struct gui_window *g); void gui_window_set_title(struct gui_window *g, const char *title); void gui_window_redraw_window(struct gui_window *g); void gui_window_update_box(struct gui_window *g, diff --git a/desktop/gui_factory.c b/desktop/gui_factory.c index fe7536353..9a4fa396a 100644 --- a/desktop/gui_factory.c +++ b/desktop/gui_factory.c @@ -16,11 +16,18 @@ nserror gui_factory_register(struct gui_table *gt) return NSERROR_INIT_FAILED; } - /* check the mandantory fields are set */ + /* check the mandantory fields are set */ if (gt->poll == NULL) { return NSERROR_BAD_PARAMETER; } + if (gt->window_create == NULL) { + return NSERROR_BAD_PARAMETER; + } + if (gt->window_destroy == NULL) { + return NSERROR_BAD_PARAMETER; + } + /* fill in the optional entries with defaults */ if (gt->quit == NULL) { diff --git a/framebuffer/gui.c b/framebuffer/gui.c index 1439c3c2d..12145fd80 100644 --- a/framebuffer/gui.c +++ b/framebuffer/gui.c @@ -1501,10 +1501,10 @@ create_normal_browser_window(struct gui_window *gw, int furniture_width) } -struct gui_window * -gui_create_browser_window(struct browser_window *bw, - struct browser_window *clone, - bool new_tab) +static struct gui_window * +gui_window_create(struct browser_window *bw, + struct browser_window *clone, + bool new_tab) { struct gui_window *gw; @@ -1527,7 +1527,7 @@ gui_create_browser_window(struct browser_window *bw, return gw; } -void +static void gui_window_destroy(struct gui_window *gw) { fbtk_destroy_widget(gw->window); @@ -1901,8 +1901,10 @@ void gui_file_gadget_open(struct gui_window *g, hlcache_handle *hl, static struct gui_table framebuffer_gui_table = { - .poll = &gui_poll, - .quit = &gui_quit, + .poll = gui_poll, + .quit = gui_quit, + .window_create = gui_window_create, + .window_destroy = gui_window_destroy, }; /** Entry point from OS. @@ -1133,8 +1133,10 @@ bool path_add_part(char *path, int length, const char *newpart) static struct gui_table nsgtk_gui_table = { - .poll = &gui_poll, - .quit = &gui_quit, + .poll = gui_poll, + .quit = gui_quit, + .window_create = gui_window_create, + .window_destroy = gui_window_destroy, }; /** diff --git a/gtk/window.c b/gtk/window.c index 8f05c3799..aabaacbb8 100644 --- a/gtk/window.c +++ b/gtk/window.c @@ -655,10 +655,11 @@ static void window_destroy(GtkWidget *widget, gpointer data) browser_window_destroy(gw->bw); } -/* Core interface docuemnted in desktop/gui.h to create a gui_window */ -struct gui_window *gui_create_browser_window(struct browser_window *bw, - struct browser_window *clone, - bool new_tab) +/* Core interface documented in desktop/gui.h to create a gui_window */ +struct gui_window * +gui_window_create(struct browser_window *bw, + struct browser_window *clone, + bool new_tab) { struct gui_window *g; /**< what we're creating to return */ GError* error = NULL; diff --git a/gtk/window.h b/gtk/window.h index 2def42dd5..9ff036e85 100644 --- a/gtk/window.h +++ b/gtk/window.h @@ -48,5 +48,7 @@ struct gui_window *nsgtk_window_iterate(struct gui_window *g); GtkWidget *nsgtk_window_get_tab(struct gui_window *g); void nsgtk_window_set_tab(struct gui_window *g, GtkWidget *w); +struct gui_window *gui_window_create(struct browser_window *bw, struct browser_window *clone, bool new_tab); +void gui_window_destroy(struct gui_window *g); #endif /* NETSURF_GTK_WINDOW_H */ diff --git a/monkey/browser.c b/monkey/browser.c index 73549f36a..b9e583c1f 100644 --- a/monkey/browser.c +++ b/monkey/browser.c @@ -88,8 +88,9 @@ monkey_kill_browser_windows(void) } struct gui_window * -gui_create_browser_window(struct browser_window *bw, - struct browser_window *clone, bool new_tab) +gui_window_create(struct browser_window *bw, + struct browser_window *clone, + bool new_tab) { struct gui_window *ret = calloc(sizeof(*ret), 1); if (ret == NULL) diff --git a/monkey/browser.h b/monkey/browser.h index 3ccbe7a91..0b1fd8d13 100644 --- a/monkey/browser.h +++ b/monkey/browser.h @@ -42,4 +42,9 @@ void monkey_window_process_reformats(void); void monkey_window_handle_command(int argc, char **argv); void monkey_kill_browser_windows(void); + + +struct gui_window *gui_window_create(struct browser_window *bw, struct browser_window *clone, bool new_tab); +void gui_window_destroy(struct gui_window *g); + #endif /* NETSURF_MONKEY_BROWSER_H */ diff --git a/monkey/main.c b/monkey/main.c index 2e23f55d6..2ef3bb98f 100644 --- a/monkey/main.c +++ b/monkey/main.c @@ -55,7 +55,7 @@ nsmonkey_init_resource(const char *resource_path) return respath; } -static void gui_quit(void) +static void monkey_quit(void) { urldb_save_cookies(nsoption_charp(cookie_jar)); urldb_save(nsoption_charp(url_file)); @@ -114,8 +114,10 @@ static bool nslog_stream_configure(FILE *fptr) } static struct gui_table monkey_gui_table = { - .poll = &monkey_poll, - .quit = &gui_quit, + .poll = monkey_poll, + .quit = monkey_quit, + .window_create = gui_window_create, + .window_destroy = gui_window_destroy, }; int diff --git a/riscos/gui.c b/riscos/gui.c index 5a6668bfd..460036573 100644 --- a/riscos/gui.c +++ b/riscos/gui.c @@ -838,8 +838,10 @@ static bool nslog_stream_configure(FILE *fptr) } static struct gui_table riscos_gui_table = { - .poll = &gui_poll, - .quit = &gui_quit, + .poll = gui_poll, + .quit = gui_quit, + .window_create = gui_window_create, + .window_destroy = gui_window_destroy, }; diff --git a/riscos/window.c b/riscos/window.c index c314c748b..892c24e1d 100644 --- a/riscos/window.c +++ b/riscos/window.c @@ -379,7 +379,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, +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; diff --git a/riscos/window.h b/riscos/window.h index adbd999f9..a59a9423c 100644 --- a/riscos/window.h +++ b/riscos/window.h @@ -29,5 +29,9 @@ void ro_gui_window_initialise(void); bool ro_gui_window_check_menu(wimp_menu *menu); +struct gui_window *gui_window_create(struct browser_window *bw, struct browser_window *clone, bool new_tab); +void gui_window_destroy(struct gui_window *g); + + #endif diff --git a/windows/gui.c b/windows/gui.c index e20369a65..a01b6c4df 100644 --- a/windows/gui.c +++ b/windows/gui.c @@ -80,7 +80,7 @@ void gui_file_gadget_open(struct gui_window *g, hlcache_handle *hl, /* browser_window_set_gadget_filename(bw, gadget, "filename"); */ } -void gui_poll(bool active) +static void gui_poll(bool active) { MSG Msg; /* message from system */ BOOL bRet; /* message fetch result */ @@ -1220,10 +1220,10 @@ static HWND nsws_window_create(struct gui_window *gw) * create a new gui_window to contain a browser_window * \param bw the browser_window to connect to the new gui_window */ -struct gui_window * -gui_create_browser_window(struct browser_window *bw, - struct browser_window *clone, - bool new_tab) +static struct gui_window * +gui_window_create(struct browser_window *bw, + struct browser_window *clone, + bool new_tab) { struct gui_window *gw; @@ -1399,7 +1399,7 @@ struct browser_window *gui_window_browser_window(struct gui_window *w) /** * window cleanup code */ -void gui_window_destroy(struct gui_window *w) +static void gui_window_destroy(struct gui_window *w) { if (w == NULL) return; @@ -1883,3 +1883,11 @@ nsws_create_main_class(HINSTANCE hinstance) { return ret; } + +static struct gui_table gui_table = { + .poll = gui_poll, + .window_create = gui_window_create, + .window_destroy = gui_window_destroy, +}; + +struct gui_table *win32_gui_table = &gui_table; diff --git a/windows/gui.h b/windows/gui.h index 9bcba592e..29c7f8485 100644 --- a/windows/gui.h +++ b/windows/gui.h @@ -24,6 +24,8 @@ #include "desktop/gui.h" #include "windows/localhistory.h" +extern struct gui_table *win32_gui_table; + extern HINSTANCE hInstance; /* bounding box */ diff --git a/windows/main.c b/windows/main.c index 320c7e4fb..5f20a70d1 100644 --- a/windows/main.c +++ b/windows/main.c @@ -91,9 +91,6 @@ static nserror set_defaults(struct nsoption_s *defaults) return NSERROR_OK; } -static struct gui_table win32_gui_table = { - .poll = &gui_poll, -}; /** @@ -157,7 +154,7 @@ WinMain(HINSTANCE hInstance, HINSTANCE hLastInstance, LPSTR lpcli, int ncmd) /* common initialisation */ messages = filepath_find(respaths, "messages"); - ret = netsurf_init(messages, &win32_gui_table); + ret = netsurf_init(messages, win32_gui_table); free(messages); if (ret != NSERROR_OK) { free(options_file_location); |