summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2014-01-12 23:50:54 +0000
committerVincent Sanders <vince@kyllikki.org>2014-01-12 23:50:54 +0000
commit5a962586fb161651fc612ed8a8f6da99d8d22f65 (patch)
treec31bb23578c4b60ec575952cd51e6bdbac6a28dc
parent4b49b4ac775a1e3ca0c59f390f3f2427e31bce2b (diff)
downloadnetsurf-5a962586fb161651fc612ed8a8f6da99d8d22f65.tar.gz
netsurf-5a962586fb161651fc612ed8a8f6da99d8d22f65.tar.bz2
move mandantory window update and redraw operations into table
-rw-r--r--amiga/gui.c6
-rw-r--r--atari/gui.c6
-rw-r--r--beos/window.cpp6
-rw-r--r--cocoa/gui.m6
-rw-r--r--desktop/browser.c6
-rw-r--r--desktop/gui.h18
-rw-r--r--desktop/gui_factory.c6
-rw-r--r--framebuffer/gui.c6
-rw-r--r--gtk/window.c6
-rw-r--r--monkey/browser.c6
-rw-r--r--riscos/print.c1
-rw-r--r--riscos/window.c5
-rw-r--r--windows/gui.c28
13 files changed, 72 insertions, 34 deletions
diff --git a/amiga/gui.c b/amiga/gui.c
index 8c2f43e73..9ed3559f2 100644
--- a/amiga/gui.c
+++ b/amiga/gui.c
@@ -4184,7 +4184,7 @@ static void ami_do_redraw_limits(struct gui_window *g, struct browser_window *bw
return;
}
-void gui_window_redraw_window(struct gui_window *g)
+static void gui_window_redraw_window(struct gui_window *g)
{
ULONG cur_tab = 0;
@@ -4262,7 +4262,7 @@ struct nsObject *nnode;
return true;
}
-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)
{
struct nsObject *nsobj;
struct rect *deferred_rect;
@@ -5085,6 +5085,8 @@ void gui_file_gadget_open(struct gui_window *g, hlcache_handle *hl,
static struct gui_window_table ami_window_table = {
.create = gui_window_create,
.destroy = gui_window_destroy,
+ .redraw = gui_window_redraw_window,
+ .update = gui_window_update_box,
.set_icon = gui_window_set_icon,
.set_title = gui_window_set_title,
diff --git a/atari/gui.c b/atari/gui.c
index 7aa0dee07..cfb6b86d6 100644
--- a/atari/gui.c
+++ b/atari/gui.c
@@ -363,7 +363,7 @@ void gui_window_set_scale(struct gui_window *gw, float scale)
browser_window_reformat(gw->browser->bw, false, width, heigth);
}
-void gui_window_redraw_window(struct gui_window *gw)
+static void gui_window_redraw_window(struct gui_window *gw)
{
CMP_BROWSER b;
GRECT rect;
@@ -374,7 +374,7 @@ void gui_window_redraw_window(struct gui_window *gw)
window_schedule_redraw_grect(gw->root, &rect);
}
-void gui_window_update_box(struct gui_window *gw, const struct rect *rect)
+static void gui_window_update_box(struct gui_window *gw, const struct rect *rect)
{
GRECT area;
struct gemtk_wm_scroll_info_s *slid;
@@ -1070,6 +1070,8 @@ void gui_file_gadget_open(struct gui_window *g, hlcache_handle *hl,
static struct gui_window_table atari_window_table = {
.create = gui_window_create,
.destroy = gui_window_destroy,
+ .redraw = gui_window_redraw_window,
+ .update = gui_window_update_box,
.set_title = gui_window_set_title,
.set_url = gui_window_set_url,
diff --git a/beos/window.cpp b/beos/window.cpp
index 66bb90640..beee9642e 100644
--- a/beos/window.cpp
+++ b/beos/window.cpp
@@ -1014,7 +1014,7 @@ void nsbeos_redraw_caret(struct gui_window *g)
g->view->UnlockLooper();
}
-void gui_window_redraw_window(struct gui_window *g)
+static void gui_window_redraw_window(struct gui_window *g)
{
if (g->view == NULL)
return;
@@ -1029,7 +1029,7 @@ void gui_window_redraw_window(struct gui_window *g)
g->view->UnlockLooper();
}
-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)
{
hlcache_handle *c = g->bw->current_content;
@@ -1365,6 +1365,8 @@ void gui_window_get_dimensions(struct gui_window *g, int *width, int *height,
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,
.new_content = gui_window_new_content,
diff --git a/cocoa/gui.m b/cocoa/gui.m
index a94cbadb2..5909fcddc 100644
--- a/cocoa/gui.m
+++ b/cocoa/gui.m
@@ -107,12 +107,12 @@ static void gui_window_set_title(struct gui_window *g, const char *title)
[(BrowserViewController *)g setTitle: [NSString stringWithUTF8String: title]];
}
-void gui_window_redraw_window(struct gui_window *g)
+static void gui_window_redraw_window(struct gui_window *g)
{
[[(BrowserViewController *)g browserView] setNeedsDisplay: YES];
}
-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)
{
const NSRect nsrect = cocoa_scaled_rect_wh( [(BrowserViewController *)g browser]->scale,
rect->x0, rect->y0,
@@ -299,6 +299,8 @@ void gui_file_gadget_open(struct gui_window *g, hlcache_handle *hl,
static struct gui_window_table cocoa_window_table = {
.create = gui_window_create,
.destroy = gui_window_destroy,
+ .redraw = gui_window_redraw_window,
+ .update = gui_window_update_box,
.set_title = gui_window_set_title,
.set_url = gui_window_set_url,
diff --git a/desktop/browser.c b/desktop/browser.c
index 7c29468c3..6d260a538 100644
--- a/desktop/browser.c
+++ b/desktop/browser.c
@@ -1974,7 +1974,7 @@ void browser_window_update(struct browser_window *bw, bool scroll_to_top)
browser_window_set_scroll(bw, x, y);
}
- gui_window_redraw_window(bw->window);
+ guit->window->redraw(bw->window);
break;
@@ -2040,7 +2040,7 @@ void browser_window_update_box(struct browser_window *bw, struct rect *rect)
if (bw->window != NULL) {
/* Front end window */
- gui_window_update_box(bw->window, rect);
+ guit->window->update(bw->window, rect);
} else {
/* Core managed browser window */
browser_window_get_position(bw, true, &pos_x, &pos_y);
@@ -2052,7 +2052,7 @@ void browser_window_update_box(struct browser_window *bw, struct rect *rect)
rect->x1 += pos_x / bw->scale;
rect->y1 += pos_y / bw->scale;
- gui_window_update_box(top->window, rect);
+ guit->window->update(top->window, rect);
}
}
diff --git a/desktop/gui.h b/desktop/gui.h
index 1ab871f33..0b7bdcca6 100644
--- a/desktop/gui.h
+++ b/desktop/gui.h
@@ -79,6 +79,21 @@ struct gui_window_table {
/** destroy previously created gui window */
void (*destroy)(struct gui_window *g);
+ /**
+ * Force a redraw of the entire contents of a window.
+ *
+ * \param g gui_window to redraw
+ */
+ void (*redraw)(struct gui_window *g);
+
+ /**
+ * Redraw an area of a window.
+ *
+ * \param g gui_window
+ * \param rect area to redraw
+ */
+ void (*update)(struct gui_window *g, const struct rect *rect);
+
/* Optional entries */
@@ -164,9 +179,6 @@ struct gui_table {
extern struct gui_table *guit; /* the gui vtable */
-void gui_window_redraw_window(struct gui_window *g);
-void gui_window_update_box(struct gui_window *g,
- const struct rect *rect);
bool gui_window_get_scroll(struct gui_window *g, int *sx, int *sy);
void gui_window_set_scroll(struct gui_window *g, int sx, int sy);
void gui_window_get_dimensions(struct gui_window *g, int *width, int *height,
diff --git a/desktop/gui_factory.c b/desktop/gui_factory.c
index 73fb016e4..9cf328557 100644
--- a/desktop/gui_factory.c
+++ b/desktop/gui_factory.c
@@ -80,6 +80,12 @@ static nserror verify_window_register(struct gui_window_table *gwt)
if (gwt->destroy == NULL) {
return NSERROR_BAD_PARAMETER;
}
+ if (gwt->redraw == NULL) {
+ return NSERROR_BAD_PARAMETER;
+ }
+ if (gwt->update == NULL) {
+ return NSERROR_BAD_PARAMETER;
+ }
/* fill in the optional entries with defaults */
if (gwt->set_title == NULL) {
diff --git a/framebuffer/gui.c b/framebuffer/gui.c
index 9dd35b6f9..aefc24bdb 100644
--- a/framebuffer/gui.c
+++ b/framebuffer/gui.c
@@ -1535,13 +1535,13 @@ gui_window_destroy(struct gui_window *gw)
free(gw);
}
-void
+static void
gui_window_redraw_window(struct gui_window *g)
{
fb_queue_redraw(g->browser, 0, 0, fbtk_get_width(g->browser), fbtk_get_height(g->browser) );
}
-void
+static void
gui_window_update_box(struct gui_window *g, const struct rect *rect)
{
struct browser_widget_s *bwidget = fbtk_get_userpw(g->browser);
@@ -1844,6 +1844,8 @@ void gui_file_gadget_open(struct gui_window *g, hlcache_handle *hl,
static struct gui_window_table framebuffer_gui_window_table = {
.create = gui_window_create,
.destroy = gui_window_destroy,
+ .redraw = gui_window_redraw_window,
+ .update = gui_window_update_box,
.set_url = gui_window_set_url,
.start_throbber = gui_window_start_throbber,
diff --git a/gtk/window.c b/gtk/window.c
index 7f3db864a..0ea67edb9 100644
--- a/gtk/window.c
+++ b/gtk/window.c
@@ -919,12 +919,12 @@ void gui_window_remove_caret(struct gui_window *g)
}
-void gui_window_redraw_window(struct gui_window *g)
+static void gui_window_redraw_window(struct gui_window *g)
{
gtk_widget_queue_draw(GTK_WIDGET(g->layout));
}
-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)
{
int sx, sy;
hlcache_handle *c = g->bw->current_content;
@@ -1174,6 +1174,8 @@ void gui_file_gadget_open(struct gui_window *g, hlcache_handle *hl,
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,
.set_icon = gui_window_set_icon,
diff --git a/monkey/browser.c b/monkey/browser.c
index 985174d82..33f302089 100644
--- a/monkey/browser.c
+++ b/monkey/browser.c
@@ -126,7 +126,7 @@ gui_window_set_title(struct gui_window *g, const char *title)
fprintf(stdout, "WINDOW TITLE WIN %u STR %s\n", g->win_num, title);
}
-void
+static void
gui_window_redraw_window(struct gui_window *g)
{
fprintf(stdout, "WINDOW REDRAW WIN %u\n", g->win_num);
@@ -174,7 +174,7 @@ gui_window_set_scroll(struct gui_window *g, int sx, int sy)
fprintf(stdout, "WINDOW SET_SCROLL WIN %u X %d Y %d\n", g->win_num, sx, sy);
}
-void
+static void
gui_window_update_box(struct gui_window *g, const struct rect *rect)
{
fprintf(stdout, "WINDOW UPDATE_BOX WIN %u X %d Y %d WIDTH %d HEIGHT %d\n",
@@ -566,6 +566,8 @@ monkey_window_handle_command(int argc, char **argv)
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,
.set_title = gui_window_set_title,
.set_url = gui_window_set_url,
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/window.c b/riscos/window.c
index af045b2a4..3975773a0 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);
@@ -710,7 +711,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;
@@ -5242,6 +5243,8 @@ bool ro_gui_alt_pressed(void)
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,
.set_icon = gui_window_set_icon,
.set_title = gui_window_set_title,
diff --git a/windows/gui.c b/windows/gui.c
index 6e04e3e97..e40414eac 100644
--- a/windows/gui.c
+++ b/windows/gui.c
@@ -723,6 +723,18 @@ nsws_window_resize(struct gui_window *gw,
return 0;
}
+/**
+ * redraw the whole window
+ */
+static void gui_window_redraw_window(struct gui_window *gw)
+{
+ /* LOG(("gw:%p", gw)); */
+ if (gw == NULL)
+ return;
+
+ RedrawWindow(gw->drawingarea, NULL, NULL, RDW_INVALIDATE | RDW_NOERASE);
+}
+
static LRESULT
nsws_window_command(HWND hwnd,
@@ -1439,19 +1451,7 @@ static void gui_window_set_title(struct gui_window *w, const char *title)
free(fulltitle);
}
-/**
- * redraw the whole window
- */
-void gui_window_redraw_window(struct gui_window *gw)
-{
- /* LOG(("gw:%p", gw)); */
- if (gw == NULL)
- return;
-
- RedrawWindow(gw->drawingarea, NULL, NULL, RDW_INVALIDATE | RDW_NOERASE);
-}
-
-void gui_window_update_box(struct gui_window *gw, const struct rect *rect)
+static void gui_window_update_box(struct gui_window *gw, const struct rect *rect)
{
/* LOG(("gw:%p %f,%f %f,%f", gw, data->redraw.x, data->redraw.y, data->redraw.width, data->redraw.height)); */
@@ -1847,6 +1847,8 @@ nsws_create_main_class(HINSTANCE hinstance) {
static struct gui_window_table win32_window_table = {
.create = gui_window_create,
.destroy = gui_window_destroy,
+ .redraw = gui_window_redraw_window,
+ .update = gui_window_update_box,
.set_title = gui_window_set_title,
.set_url = gui_window_set_url,