summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2014-01-11 22:34:12 +0000
committerVincent Sanders <vince@kyllikki.org>2014-01-11 22:34:12 +0000
commitc8496df3df7d059528f2d5e735be5c55bfa75ef6 (patch)
tree7979e63f7e548c7a9d6bb024afde7b1bc785ff44
parentd3c392c3d3b516f05fbf71020b2f6774ce20ce8c (diff)
downloadnetsurf-c8496df3df7d059528f2d5e735be5c55bfa75ef6.tar.gz
netsurf-c8496df3df7d059528f2d5e735be5c55bfa75ef6.tar.bz2
move window creation and destruction into table
-rw-r--r--amiga/gui.c14
-rw-r--r--atari/gui.c20
-rw-r--r--beos/gui.cpp6
-rw-r--r--beos/window.cpp5
-rw-r--r--beos/window.h6
-rw-r--r--cocoa/gui.m9
-rw-r--r--desktop/browser.c6
-rw-r--r--desktop/gui.h14
-rw-r--r--desktop/gui_factory.c9
-rw-r--r--framebuffer/gui.c16
-rw-r--r--gtk/gui.c6
-rw-r--r--gtk/window.c9
-rw-r--r--gtk/window.h2
-rw-r--r--monkey/browser.c5
-rw-r--r--monkey/browser.h5
-rw-r--r--monkey/main.c8
-rw-r--r--riscos/gui.c6
-rw-r--r--riscos/window.c2
-rw-r--r--riscos/window.h4
-rw-r--r--windows/gui.c20
-rw-r--r--windows/gui.h2
-rw-r--r--windows/main.c5
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.
diff --git a/gtk/gui.c b/gtk/gui.c
index da602e189..c94b9c836 100644
--- a/gtk/gui.c
+++ b/gtk/gui.c
@@ -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);