summaryrefslogtreecommitdiff
path: root/render/html.c
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2003-07-09 21:33:01 +0000
committerJames Bursa <james@netsurf-browser.org>2003-07-09 21:33:01 +0000
commit9317e33d0bb597543239ced2e100ece042cf416f (patch)
tree3d509c4b9ee85555f0c07dfd6b3a06365847e6fe /render/html.c
parent80013c7a7194c47b11f6f8dddc416367df3f134d (diff)
downloadnetsurf-9317e33d0bb597543239ced2e100ece042cf416f.tar.gz
netsurf-9317e33d0bb597543239ced2e100ece042cf416f.tar.bz2
[project @ 2003-07-09 21:33:01 by bursa]
More work on <object> and plugins. svn path=/import/netsurf/; revision=213
Diffstat (limited to 'render/html.c')
-rw-r--r--render/html.c47
1 files changed, 26 insertions, 21 deletions
diff --git a/render/html.c b/render/html.c
index 60d218121..b8db76ad1 100644
--- a/render/html.c
+++ b/render/html.c
@@ -96,6 +96,8 @@ int html_convert(struct content *c, unsigned int width, unsigned int height)
/* convert xml tree to box tree */
LOG(("XML to box"));
+ sprintf(c->status_message, "Processing document");
+ content_broadcast(c, CONTENT_MSG_STATUS, 0);
xml_to_box(html, c);
/*box_dump(c->data.html.layout->children, 0);*/
@@ -103,18 +105,18 @@ int html_convert(struct content *c, unsigned int width, unsigned int height)
xmlFreeDoc(document);
content_remove_user(c->data.html.stylesheet_content[0],
- html_convert_css_callback, c, 0);
+ html_convert_css_callback, c, 0, 0);
if (c->data.html.stylesheet_content[1] != 0)
content_destroy(c->data.html.stylesheet_content[1]);
for (i = 2; i != c->data.html.stylesheet_count; i++)
if (c->data.html.stylesheet_content[i] != 0)
content_remove_user(c->data.html.stylesheet_content[i],
- html_convert_css_callback, c, i);
+ html_convert_css_callback, c, i, 0);
xfree(c->data.html.stylesheet_content);
/* layout the box tree */
- sprintf(c->status_message, "Formatting document");
- content_broadcast(c, CONTENT_MSG_STATUS, 0);
+ sprintf(c->status_message, "Formatting document");
+ content_broadcast(c, CONTENT_MSG_STATUS, 0);
LOG(("Layout document"));
layout_document(c->data.html.layout->children, width);
/*box_dump(c->data.html.layout->children, 0);*/
@@ -145,7 +147,7 @@ void html_convert_css_callback(content_msg msg, struct content *css,
c->error = 1;
sprintf(c->status_message, "Warning: stylesheet is not CSS");
content_broadcast(c, CONTENT_MSG_STATUS, 0);
- content_remove_user(css, html_convert_css_callback, c, i);
+ content_remove_user(css, html_convert_css_callback, c, i, 0);
}
break;
@@ -173,7 +175,7 @@ void html_convert_css_callback(content_msg msg, struct content *css,
c->active--;
c->data.html.stylesheet_content[i] = fetchcache(
error, c->url, html_convert_css_callback,
- c, i, css->width, css->height);
+ c, i, css->width, css->height, 0);
if (c->data.html.stylesheet_content[i]->status != CONTENT_STATUS_DONE)
c->active++;
break;
@@ -225,7 +227,7 @@ void html_find_stylesheets(struct content *c, xmlNode *head)
#endif
c->url,
html_convert_css_callback,
- c, 0, c->width, c->height);
+ c, 0, c->width, c->height, 0);
if (c->data.html.stylesheet_content[0]->status != CONTENT_STATUS_DONE)
c->active++;
@@ -275,7 +277,7 @@ void html_find_stylesheets(struct content *c, xmlNode *head)
(i + 1) * sizeof(*c->data.html.stylesheet_content));
c->data.html.stylesheet_content[i] = fetchcache(url, c->url,
html_convert_css_callback, c, i,
- c->width, c->height);
+ c->width, c->height, 0);
if (c->data.html.stylesheet_content[i]->status != CONTENT_STATUS_DONE)
c->active++;
free(url);
@@ -356,7 +358,7 @@ void html_fetch_object(struct content *c, char *url, struct box *box)
/* start fetch */
c->data.html.object[i].content = fetchcache(url, c->url,
html_object_callback,
- c, i, 0, 0);
+ c, i, 0, 0, box->object_params);
c->active++;
if (c->data.html.object[i].content->status == CONTENT_STATUS_DONE)
html_object_callback(CONTENT_MSG_DONE,
@@ -379,7 +381,7 @@ void html_object_callback(content_msg msg, struct content *object,
c->error = 1;
sprintf(c->status_message, "Warning: bad object type");
content_broadcast(c, CONTENT_MSG_STATUS, 0);
- content_remove_user(object, html_object_callback, c, i);
+ content_remove_user(object, html_object_callback, c, i, 0);
}
break;
@@ -447,7 +449,8 @@ void html_object_callback(content_msg msg, struct content *object,
c->data.html.object[i].url = xstrdup(error);
c->data.html.object[i].content = fetchcache(
error, c->url, html_object_callback,
- c, i, 0, 0);
+ c, i, 0, 0,
+ c->data.html.object[i].box->object_params);
if (c->data.html.object[i].content->status != CONTENT_STATUS_DONE)
c->active++;
break;
@@ -479,7 +482,8 @@ void html_revive(struct content *c, unsigned int width, unsigned int height)
c->data.html.object[i].content = fetchcache(
c->data.html.object[i].url, c->url,
html_object_callback,
- c, i, 0, 0);
+ c, i, 0, 0,
+ c->data.html.object[i].box->object_params);
if (c->data.html.object[i].content->status != CONTENT_STATUS_DONE)
c->active++;
}
@@ -507,6 +511,16 @@ void html_destroy(struct content *c)
unsigned int i;
LOG(("content %p", c));
+ for (i = 0; i != c->data.html.object_count; i++) {
+ LOG(("object %i %p", i, c->data.html.object[i].content));
+ if (c->data.html.object[i].content != 0)
+ content_remove_user(c->data.html.object[i].content,
+ html_object_callback, c, i,
+ c->data.html.object[i].box->object_params);
+ free(c->data.html.object[i].url);
+ }
+ free(c->data.html.object);
+
LOG(("layout %p", c->data.html.layout));
if (c->data.html.layout != 0)
box_free(c->data.html.layout);
@@ -516,14 +530,5 @@ void html_destroy(struct content *c)
LOG(("title %p", c->title));
if (c->title != 0)
xfree(c->title);
-
- for (i = 0; i != c->data.html.object_count; i++) {
- LOG(("object %i %p", i, c->data.html.object[i].content));
- if (c->data.html.object[i].content != 0)
- content_remove_user(c->data.html.object[i].content,
- html_object_callback, c, i);
- free(c->data.html.object[i].url);
- }
- free(c->data.html.object);
}