From 5a962586fb161651fc612ed8a8f6da99d8d22f65 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Sun, 12 Jan 2014 23:50:54 +0000 Subject: move mandantory window update and redraw operations into table --- desktop/browser.c | 6 +++--- desktop/gui.h | 18 +++++++++++++++--- desktop/gui_factory.c | 6 ++++++ 3 files changed, 24 insertions(+), 6 deletions(-) (limited to 'desktop') 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) { -- cgit v1.2.3