From ec563e60ca5dea8f903f287ac2dc7bd5350772bd Mon Sep 17 00:00:00 2001 From: James Bursa Date: Sun, 26 Nov 2006 21:04:42 +0000 Subject: Add browser_window_reformat() and use it instead of content_reformat() to remove browser_window calls from html.c. svn path=/trunk/netsurf/; revision=3071 --- desktop/browser.c | 86 ++++++++++++++++++++++++++++++++++++------------------- desktop/browser.h | 1 + gtk/gtk_window.c | 2 +- render/html.c | 5 ---- riscos/window.c | 2 +- 5 files changed, 60 insertions(+), 36 deletions(-) diff --git a/desktop/browser.c b/desktop/browser.c index 2b28f87c7..d9fbfa4ad 100644 --- a/desktop/browser.c +++ b/desktop/browser.c @@ -322,7 +322,6 @@ void browser_window_callback(content_msg msg, struct content *c, char status[40]; char url[256]; - switch (msg) { case CONTENT_MSG_LOADING: assert(bw->loading_content == c); @@ -425,7 +424,7 @@ void browser_window_callback(content_msg msg, struct content *c, bw->referer = 0; if (bw->refresh_interval != -1) schedule(bw->refresh_interval, - browser_window_refresh, bw); + browser_window_refresh, bw); break; case CONTENT_MSG_ERROR: @@ -523,31 +522,6 @@ void browser_window_callback(content_msg msg, struct content *c, } -/** - * Refresh browser window - * - * \param p Browser window to refresh - */ - -void browser_window_refresh(void *p) -{ - struct browser_window *bw = p; - bool history_add = true; - - assert(bw->current_content->status == CONTENT_STATUS_READY || - bw->current_content->status == CONTENT_STATUS_DONE); - - /* mark this content as invalid so it gets flushed from the cache */ - bw->current_content->fresh = false; - if ((bw->current_content->url) && - (bw->current_content->refresh) && - (!strcmp(bw->current_content->url, bw->current_content->refresh))) - history_add = false; - - browser_window_go(bw, bw->current_content->refresh, - bw->current_content->url, history_add); -} - /** * Transfer the loading_content to a new download window. */ @@ -586,6 +560,34 @@ void browser_window_convert_to_download(struct browser_window *bw) } +/** + * Handle meta http-equiv refresh time elapsing by loading a new page. + * + * \param p browser window to refresh with new page + */ + +void browser_window_refresh(void *p) +{ + struct browser_window *bw = p; + bool history_add = true; + + assert(bw->current_content->status == CONTENT_STATUS_READY || + bw->current_content->status == CONTENT_STATUS_DONE); + + /* mark this content as invalid so it gets flushed from the cache */ + bw->current_content->fresh = false; + + if ((bw->current_content->url) && + (bw->current_content->refresh) && + (!strcmp(bw->current_content->url, + bw->current_content->refresh))) + history_add = false; + + browser_window_go(bw, bw->current_content->refresh, + bw->current_content->url, history_add); +} + + /** * Start the busy indicator. * @@ -897,6 +899,30 @@ struct browser_window *browser_window_owner(struct browser_window *bw) } +/** + * Reformat a browser window contents to a new width or height. + * + * \param bw the browser window to reformat + * \param width new width + * \param height new height + */ + +void browser_window_reformat(struct browser_window *bw, int width, int height) +{ + struct content *c = bw->current_content; + + if (!c) + return; + + content_reformat(c, width, height); + + if (c->type == CONTENT_HTML && c->data.html.frameset) + browser_window_recalculate_frameset(bw); + if (c->type == CONTENT_HTML && c->data.html.iframe) + browser_window_recalculate_iframes(bw); +} + + /** * Sets the scale of a browser window * @@ -905,7 +931,8 @@ struct browser_window *browser_window_owner(struct browser_window *bw) * \param all Scale all windows in the tree (ie work up aswell as down) */ -void browser_window_set_scale(struct browser_window *bw, float scale, bool all) { +void browser_window_set_scale(struct browser_window *bw, float scale, bool all) +{ while (bw->parent && all) bw = bw->parent; browser_window_set_scale_internal(bw, scale); @@ -914,7 +941,8 @@ void browser_window_set_scale(struct browser_window *bw, float scale, bool all) browser_window_recalculate_frameset(bw); } -void browser_window_set_scale_internal(struct browser_window *bw, float scale) { +void browser_window_set_scale_internal(struct browser_window *bw, float scale) +{ int i; gui_window_set_scale(bw->window, scale); diff --git a/desktop/browser.h b/desktop/browser.h index 41519652a..e783e6199 100644 --- a/desktop/browser.h +++ b/desktop/browser.h @@ -193,6 +193,7 @@ void browser_window_stop(struct browser_window *bw); void browser_window_reload(struct browser_window *bw, bool all); void browser_window_destroy(struct browser_window *bw); struct browser_window * browser_window_owner(struct browser_window *bw); +void browser_window_reformat(struct browser_window *bw, int width, int height); void browser_window_set_scale(struct browser_window *bw, float scale, bool all); void browser_window_mouse_click(struct browser_window *bw, diff --git a/gtk/gtk_window.c b/gtk/gtk_window.c index 4aa509bac..cd952b220 100644 --- a/gtk/gtk_window.c +++ b/gtk/gtk_window.c @@ -392,7 +392,7 @@ void nsgtk_perform_deferred_resize(void *p) g->bw->current_content->status != CONTENT_STATUS_DONE) return; - content_reformat(g->bw->current_content, + browser_window_reformat(g->bw, g->target_width, g->target_height); if (GTK_WIDGET_SENSITIVE((GTK_WIDGET(g->stop_button)))) diff --git a/render/html.c b/render/html.c index 42800c09e..f50ce8d65 100644 --- a/render/html.c +++ b/render/html.c @@ -1422,11 +1422,6 @@ void html_reformat(struct content *c, int width, int height) c->width = layout->x + layout->descendant_x1; if (c->height < layout->y + layout->descendant_y1) c->height = layout->y + layout->descendant_y1; - - if ((c->data.html.frameset) && (c->data.html.bw)) - browser_window_recalculate_frameset(c->data.html.bw); - if ((c->data.html.iframe) && (c->data.html.bw)) - browser_window_recalculate_iframes(c->data.html.bw); } diff --git a/riscos/window.c b/riscos/window.c index 4322e5748..6ce59e4a6 100644 --- a/riscos/window.c +++ b/riscos/window.c @@ -2892,7 +2892,7 @@ void ro_gui_window_process_reformats(void) if (!g->reformat_pending) continue; g->reformat_pending = false; - content_reformat(g->bw->current_content, + browser_window_reformat(g->bw, g->old_width / 2 / g->option.scale, g->old_height / 2 / g->option.scale); } -- cgit v1.2.3