summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2006-11-26 21:04:42 +0000
committerJames Bursa <james@netsurf-browser.org>2006-11-26 21:04:42 +0000
commitec563e60ca5dea8f903f287ac2dc7bd5350772bd (patch)
treeca76044ca3a907244e63acb2094686f7f7221d84
parent21af6f7fda78586936405538e97e02ffa198f0e8 (diff)
downloadnetsurf-ec563e60ca5dea8f903f287ac2dc7bd5350772bd.tar.gz
netsurf-ec563e60ca5dea8f903f287ac2dc7bd5350772bd.tar.bz2
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
-rw-r--r--desktop/browser.c86
-rw-r--r--desktop/browser.h1
-rw-r--r--gtk/gtk_window.c2
-rw-r--r--render/html.c5
-rw-r--r--riscos/window.c2
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:
@@ -524,31 +523,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.
*/
@@ -587,6 +561,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.
*
* \param bw browser window
@@ -898,6 +900,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
*
* \param bw The browser window to scale
@@ -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);
}