From 15484b8c50f836a51484e1228e509ff03f39d935 Mon Sep 17 00:00:00 2001 From: Chris Lord Date: Fri, 24 Mar 2006 14:29:37 +0000 Subject: Update gtkhtml2 and Web packages git-svn-id: https://svn.o-hand.com/repos/poky/trunk@338 311d38ba-8fff-0310-9ca6-ca027cbcb966 --- .../gtkhtml2/files/at-import_box-pos.patch | 686 --------------------- 1 file changed, 686 deletions(-) delete mode 100644 openembedded/packages/gtkhtml2/files/at-import_box-pos.patch (limited to 'openembedded/packages/gtkhtml2/files/at-import_box-pos.patch') diff --git a/openembedded/packages/gtkhtml2/files/at-import_box-pos.patch b/openembedded/packages/gtkhtml2/files/at-import_box-pos.patch deleted file mode 100644 index fb31d057a..000000000 --- a/openembedded/packages/gtkhtml2/files/at-import_box-pos.patch +++ /dev/null @@ -1,686 +0,0 @@ -Index: libgtkhtml/css/cssmatcher.c -=================================================================== ---- libgtkhtml/css/cssmatcher.c.orig 2006-02-04 20:10:47.000000000 +0000 -+++ libgtkhtml/css/cssmatcher.c 2006-02-05 18:19:15.000000000 +0000 -@@ -79,7 +79,7 @@ css_matcher_match_simple_selector (CssSi - element_name = html_atom_list_get_atom (html_atom_list, node->name); - - /* Look at the element name */ -- if (!simple->is_star && simple->element_name != element_name) -+ if ((!simple->is_star) && (simple->element_name != element_name)) - return FALSE; - - str = xmlGetProp (node, "id"); -@@ -2384,7 +2384,7 @@ css_matcher_sheet_stream_close (HtmlStre - CssStylesheet *ss; - - if (html_stream_get_written (stream) != 0) { -- ss = css_parser_parse_stylesheet (context->str->str, context->str->len); -+ ss = css_parser_parse_stylesheet (context->str->str, context->str->len, NULL); - - context->stat->s.import_rule.fetched = TRUE; - -@@ -2781,7 +2781,7 @@ css_matcher_get_style (HtmlDocument *doc - css_matcher_html_to_css (doc, style, node); - - if (!default_stylesheet) { -- default_stylesheet = css_parser_parse_stylesheet (html_css, strlen (html_css)); -+ default_stylesheet = css_parser_parse_stylesheet (html_css, strlen (html_css), NULL); - } - - css_matcher_apply_stylesheet (doc, default_stylesheet, node, &declaration_list, CSS_STYLESHEET_DEFAULT, pseudo); -@@ -2800,7 +2800,7 @@ css_matcher_get_style (HtmlDocument *doc - prop = xmlGetProp (node, "style"); - - if (prop) { -- CssRuleset *rs = css_parser_parse_style_attr (prop, strlen (prop)); -+ CssRuleset *rs = css_parser_parse_style_attr (prop, strlen (prop), NULL); - gint i; - - if (rs) { -Index: libgtkhtml/css/cssparser.c -=================================================================== ---- libgtkhtml/css/cssparser.c.orig 2006-02-04 20:10:47.000000000 +0000 -+++ libgtkhtml/css/cssparser.c 2006-02-05 18:19:15.000000000 +0000 -@@ -49,7 +49,7 @@ const gchar *css_dimensions[] = { - - const gint css_n_dimensions = sizeof (css_dimensions) / sizeof (css_dimensions[0]); - --static gint css_parser_parse_value (const gchar *buffer, gint start_pos, gint end_pos, CssValue **ret_val); -+static gint css_parser_parse_value (const gchar *buffer, gint start_pos, gint end_pos, CssValue **ret_val, const gchar *base_url); - - /* FIXME: Needs more whitespace types */ - static gint -@@ -443,7 +443,7 @@ css_parser_parse_number (const gchar *bu - } - - static gint --css_parser_parse_term (const gchar *buffer, gint start_pos, gint end_pos, CssValue **ret_val) -+css_parser_parse_term (const gchar *buffer, gint start_pos, gint end_pos, CssValue **ret_val, const gchar *base_url) - { - gint pos; - HtmlAtom atom; -@@ -481,7 +481,7 @@ css_parser_parse_term (const gchar *buff - return -1; - } - -- pos = css_parser_parse_value (buffer, save_pos + 1, func_end, &val); -+ pos = css_parser_parse_value (buffer, save_pos + 1, func_end, &val, base_url); - - if (pos == -1) { - /* -@@ -495,10 +495,48 @@ css_parser_parse_term (const gchar *buff - pos = func_end; - } - if (pos != -1) { -- if (ret_val) -+ if (ret_val) { - *ret_val = css_value_function_new (atom, val); -- else -+ -+ if ((*ret_val)->v.function->name == HTML_ATOM_URL && -+ (*ret_val)->v.function->args) { -+ gchar *str = css_value_to_string ((*ret_val)->v.function->args); -+ -+ if (base_url && str) { -+ regex_t reg; -+ -+ regcomp (®, "^[a-zA-Z][a-zA-Z0-9.+-]*:", REG_NOSUB); -+ if (((*ret_val)->v.function->args->v.s[0] != '/') && (regexec (®, (*ret_val)->v.function->args->v.s, 0, NULL, 0))) { -+ gchar *temp_base, *eptr; -+ -+ temp_base = g_strdup(base_url); -+ eptr = strrchr(temp_base, '?'); -+ -+ if (eptr != NULL) -+ *eptr = '\0'; -+ -+ eptr = strrchr(temp_base, '/'); -+ if (eptr != NULL) { -+ gchar *temp_arg = g_strdup((*ret_val)->v.function->args->v.s); -+ -+ *eptr = '\0'; -+ -+ g_free((*ret_val)->v.function->args->v.s); -+ (*ret_val)->v.function->args->v.s = g_strconcat(temp_base, "/", temp_arg, NULL); -+ g_free(temp_arg); -+ } -+ -+ g_free(temp_base); -+ } -+ regfree (®); -+ } -+ -+ g_free (str); -+ } -+ } -+ else { - css_value_unref (val); -+ } - } - - /* This is due to the ) */ -@@ -566,7 +604,7 @@ css_parser_parse_term (const gchar *buff - } - - static gint --css_parser_parse_value (const gchar *buffer, gint start_pos, gint end_pos, CssValue **ret_val) -+css_parser_parse_value (const gchar *buffer, gint start_pos, gint end_pos, CssValue **ret_val, const gchar *base_url) - { - gint pos = start_pos; - gint n = 0; -@@ -589,7 +627,7 @@ css_parser_parse_value (const gchar *buf - css_value_list_append (list, term, list_sep); - } - -- pos = css_parser_parse_term (buffer, pos, end_pos, &term); -+ pos = css_parser_parse_term (buffer, pos, end_pos, &term, base_url); - - if (pos == -1) { - if (list) -@@ -618,7 +656,7 @@ css_parser_parse_value (const gchar *buf - } - else { - /* Try and parse the term to see if it's valid */ -- if (css_parser_parse_term (buffer, pos, end_pos, NULL) == -1) { -+ if (css_parser_parse_term (buffer, pos, end_pos, NULL, base_url) == -1) { - if (term) - css_value_unref (term); - if (list) -@@ -1005,7 +1043,7 @@ css_parser_parse_selectors (const gchar - } - - static gint --css_parser_parse_declaration (const gchar *buffer, gint start_pos, gint end_pos, CssDeclaration **ret_val) -+css_parser_parse_declaration (const gchar *buffer, gint start_pos, gint end_pos, CssDeclaration **ret_val, const gchar *base_url) - { - CssValue *value; - CssDeclaration *result; -@@ -1040,7 +1078,7 @@ css_parser_parse_declaration (const gcha - - pos = css_parser_parse_whitespace (buffer, pos, prio_pos); - -- pos = css_parser_parse_value (buffer, pos, prio_pos, &value); -+ pos = css_parser_parse_value (buffer, pos, prio_pos, &value, base_url); - - if (pos == -1) { - return end_pos; -@@ -1063,7 +1101,7 @@ css_parser_parse_declaration (const gcha - } - - static CssDeclaration ** --css_parser_parse_declarations (const gchar *buffer, gint start_pos, gint end_pos, gint *num_decl) -+css_parser_parse_declarations (const gchar *buffer, gint start_pos, gint end_pos, gint *num_decl, const gchar *base_url) - { - gint pos = start_pos; - gint cur_pos = start_pos; -@@ -1079,7 +1117,7 @@ css_parser_parse_declarations (const gch - - pos = css_parser_parse_to_char (buffer, ';', pos, end_pos); - -- pos = css_parser_parse_declaration (buffer, cur_pos, pos, &declaration); -+ pos = css_parser_parse_declaration (buffer, cur_pos, pos, &declaration, base_url); - - if (declaration) { - if (n_decl == n_decl_max) -@@ -1100,7 +1138,7 @@ css_parser_parse_declarations (const gch - } - - static gint --css_parser_parse_ruleset (const gchar *buffer, gint start_pos, gint end_pos, CssRuleset **ret_val) -+css_parser_parse_ruleset (const gchar *buffer, gint start_pos, gint end_pos, CssRuleset **ret_val, const gchar *base_url) - { - gint cur_pos; - gint pos; -@@ -1143,7 +1181,7 @@ css_parser_parse_ruleset (const gchar *b - } - cur_pos = css_parser_parse_whitespace (buffer, cur_pos, end_pos); - -- decl = css_parser_parse_declarations (buffer, cur_pos, pos, &n_decl); -+ decl = css_parser_parse_declarations (buffer, cur_pos, pos, &n_decl, base_url); - - pos++; - -@@ -1186,7 +1224,8 @@ css_parser_prepare_stylesheet (const gch - } - else if (str[pos] == '/' && - pos + 1 <= len && -- str[pos + 1] == '/') { -+ str[pos + 1] == '/' && -+ (pos == 0 || str[pos-1] != ':')) { - while (pos < len && - str[pos] != '\n') - pos++; -@@ -1204,7 +1243,7 @@ css_parser_prepare_stylesheet (const gch - } - - static gint --css_parser_parse_atkeyword (const gchar *buffer, gint start_pos, gint end_pos, CssStatement **ret_val) -+css_parser_parse_atkeyword (const gchar *buffer, gint start_pos, gint end_pos, CssStatement **ret_val, const gchar *base_url) - { - gint pos = start_pos; - gint tmp_pos, cur_pos; -@@ -1257,14 +1296,14 @@ css_parser_parse_atkeyword (const gchar - tmp_pos++; - - -- rs = g_new (CssRuleset *, n_rs_max); -+ rs = g_new0 (CssRuleset *, n_rs_max); - - /* g_print ("wheee: \"%s\"\n", g_strndup (buffer + cur_pos, tmp_pos - cur_pos )); */ - pos = cur_pos; - while (pos < tmp_pos) { - CssRuleset *ruleset; - -- pos = css_parser_parse_ruleset (buffer, pos, tmp_pos, &ruleset); -+ pos = css_parser_parse_ruleset (buffer, pos, tmp_pos, &ruleset, base_url); - - if (n_rs == n_rs_max) - rs = g_realloc (rs, sizeof (CssRuleset *) * -@@ -1277,7 +1316,7 @@ css_parser_parse_atkeyword (const gchar - - pos = css_parser_parse_whitespace (buffer, tmp_pos + 1, end_pos); - -- result = g_new (CssStatement, 1); -+ result = g_new0 (CssStatement, 1); - result->type = CSS_MEDIA_RULE; - result->s.media_rule.rs = rs; - result->s.media_rule.n_rs = n_rs; -@@ -1318,11 +1357,11 @@ css_parser_parse_atkeyword (const gchar - - pos = css_parser_parse_whitespace (buffer, pos, cur_pos); - -- decl = css_parser_parse_declarations (buffer, pos, cur_pos, &n_decl); -+ decl = css_parser_parse_declarations (buffer, pos, cur_pos, &n_decl, base_url); - - g_print ("N_decl is: %d\n", n_decl); - -- result = g_new (CssStatement, 1); -+ result = g_new0 (CssStatement, 1); - result->type = CSS_PAGE_RULE; - result->s.page_rule.name = name; - result->s.page_rule.pseudo = pseudo; -@@ -1337,8 +1376,8 @@ css_parser_parse_atkeyword (const gchar - pos = css_parser_parse_whitespace (buffer, pos + 1, end_pos); - cur_pos = css_parser_parse_to_char (buffer, '}', pos, end_pos); - -- decl = css_parser_parse_declarations (buffer, pos, cur_pos, &n_decl); -- result = g_new (CssStatement, 1); -+ decl = css_parser_parse_declarations (buffer, pos, cur_pos, &n_decl, base_url); -+ result = g_new0 (CssStatement, 1); - result->type = CSS_FONT_FACE_RULE; - - result->s.font_face_rule.n_decl = n_decl; -@@ -1349,8 +1388,61 @@ css_parser_parse_atkeyword (const gchar - return cur_pos + 1; - - break; -+ case HTML_ATOM_IMPORT: { -+ gchar *import_url; -+ const gchar *s_url, *e_url; -+ -+ cur_pos = css_parser_parse_to_char (buffer, ';', pos, end_pos); -+ -+ if (strchr (buffer + pos, '(')) { -+ s_url = strchr (buffer + pos, '('); -+ e_url = strchr (s_url, ')'); -+ } else if (strchr (buffer + pos, '\"')) { -+ s_url = strchr (buffer + pos, '\"'); -+ e_url = strchr (s_url + 1, '\"'); -+ } else if (strchr (buffer + pos, '\'')) { -+ s_url = strchr (buffer + pos, '\''); -+ e_url = strchr (s_url + 1, '\''); -+ } -+ -+ if (!s_url || !e_url || ((e_url - s_url) < 1)) { -+ g_warning ("Invalid @import line"); -+ *ret_val = NULL; -+ return cur_pos + 1; -+ } -+ -+ s_url++; -+ e_url--; -+ -+ if ((*s_url == '\"') && (*e_url == '\"')) { -+ s_url++; -+ e_url--; -+ } else if ((*s_url == '\'') && (*e_url == '\'')) { -+ s_url++; -+ e_url--; -+ } -+ -+ if (s_url > e_url) { -+ g_warning ("Invalid @import line"); -+ *ret_val = NULL; -+ return cur_pos + 1; -+ } -+ -+ import_url = g_strndup (s_url, strlen (s_url) - strlen (e_url) + 1); -+ -+ result = g_new0 (CssStatement, 1); -+ result->type = CSS_IMPORT_RULE; - -+ result->s.import_rule.url = css_value_string_new (import_url); -+ -+ *ret_val = result; -+ -+ return cur_pos + 1; -+ -+ break; -+ } - default: -+ g_warning ("Unhandled keyword %d - %s", keyword, buffer); - /* Unknown keyword detected, skip to next block */ - while (pos < end_pos) { - /* Handle a dangling semi-colon */ -@@ -1373,7 +1465,7 @@ css_parser_parse_atkeyword (const gchar - } - - CssRuleset * --css_parser_parse_style_attr (const gchar *buffer, gint len) -+css_parser_parse_style_attr (const gchar *buffer, gint len, const gchar *base_url) - { - CssRuleset *result; - -@@ -1382,7 +1474,7 @@ css_parser_parse_style_attr (const gchar - - /* FIXME: Are comments allowed here? */ - -- decl = css_parser_parse_declarations (buffer, 0, len, &n_decl); -+ decl = css_parser_parse_declarations (buffer, 0, len, &n_decl, base_url); - - if (!decl) - return NULL; -@@ -1397,9 +1489,8 @@ css_parser_parse_style_attr (const gchar - } - - CssStylesheet * --css_parser_parse_stylesheet (const gchar *str, gint len) -+css_parser_parse_stylesheet (const gchar *str, gint len, const gchar *base_url) - { -- CssStatement *statement; - CssStylesheet *result; - GSList *stat = NULL; - gchar *buffer; -@@ -1413,26 +1504,23 @@ css_parser_parse_stylesheet (const gchar - end_pos = len; - while (pos < len) { - if (buffer[pos] == '@') { -- pos = css_parser_parse_atkeyword (buffer, pos + 1, len, &statement); --#if 0 -- if (statement) { -- if (n_stat == n_stat_max) -- stat = g_realloc (stat, sizeof (CssStatement) * -- (n_stat_max <<= 1)); -- stat[n_stat++] = statement; -+ CssStatement *atstatement = NULL; -+ pos = css_parser_parse_atkeyword (buffer, pos + 1, len, &atstatement, base_url); -+ if (atstatement) { -+ stat = g_slist_append (stat, atstatement); - } --#endif - } - else { - CssRuleset *ruleset; -- pos = css_parser_parse_ruleset (buffer, pos, end_pos, &ruleset); -+ pos = css_parser_parse_ruleset (buffer, pos, end_pos, &ruleset, base_url); - - if (ruleset) { -- statement = g_new (CssStatement, 1); -- statement->type = CSS_RULESET; -- statement->s.ruleset = ruleset; -+ CssStatement *rulestatement; -+ rulestatement = g_new0 (CssStatement, 1); -+ rulestatement->type = CSS_RULESET; -+ rulestatement->s.ruleset = ruleset; - -- stat = g_slist_append (stat, statement); -+ stat = g_slist_append (stat, rulestatement); - } - - if (pos == -1) -@@ -1444,7 +1532,7 @@ css_parser_parse_stylesheet (const gchar - - g_free (buffer); - -- result = g_new (CssStylesheet, 1); -+ result = g_new0 (CssStylesheet, 1); - result->stat = stat; - - return result; -Index: libgtkhtml/css/cssparser.h -=================================================================== ---- libgtkhtml/css/cssparser.h.orig 2006-02-04 20:10:47.000000000 +0000 -+++ libgtkhtml/css/cssparser.h 2006-02-05 18:19:15.000000000 +0000 -@@ -24,13 +24,14 @@ - #define __CSSPARSER_H__ - - #include -+#include - - #include "cssstylesheet.h" - - G_BEGIN_DECLS - --CssStylesheet *css_parser_parse_stylesheet (const gchar *str, gint len); --CssRuleset *css_parser_parse_style_attr (const gchar *buffer, gint len); -+CssStylesheet *css_parser_parse_stylesheet (const gchar *str, gint len, const gchar *base_url); -+CssRuleset *css_parser_parse_style_attr (const gchar *buffer, gint len, const gchar *base_url); - - G_END_DECLS - -Index: libgtkhtml/css/cssstylesheet.h -=================================================================== ---- libgtkhtml/css/cssstylesheet.h.orig 2006-02-04 20:10:47.000000000 +0000 -+++ libgtkhtml/css/cssstylesheet.h 2006-02-05 18:19:15.000000000 +0000 -@@ -181,6 +181,7 @@ struct _CssTail { - }; - - struct _CssStylesheet { -+ gchar *url; - gboolean disabled; - GSList *stat; - }; -Index: libgtkhtml/css/cssvalue.c -=================================================================== ---- libgtkhtml/css/cssvalue.c.orig 2006-02-04 20:10:47.000000000 +0000 -+++ libgtkhtml/css/cssvalue.c 2006-02-04 20:13:33.000000000 +0000 -@@ -64,7 +64,7 @@ css_value_function_new (HtmlAtom name, C - function->name = name; - function->args = args; - -- result = g_new (CssValue, 1); -+ result = g_new0 (CssValue, 1); - result->ref_count = 1; - result->value_type = CSS_FUNCTION; - result->v.function = function; -Index: libgtkhtml/document/htmldocument.c -=================================================================== ---- libgtkhtml/document/htmldocument.c.orig 2006-02-04 20:10:47.000000000 +0000 -+++ libgtkhtml/document/htmldocument.c 2006-02-05 18:19:17.000000000 +0000 -@@ -134,14 +134,42 @@ static void - html_document_stylesheet_stream_close (const gchar *buffer, gint len, gpointer data) - { - CssStylesheet *sheet; -- HtmlDocument *document = HTML_DOCUMENT (data); -+ HtmlDocumentStreamData *stream_data = (HtmlDocumentStreamData *) data; -+ HtmlDocument *document = stream_data->document; - HtmlStyleChange style_change; -- -+ GSList *list; -+ - if (!buffer) - return; - -- sheet = css_parser_parse_stylesheet (buffer, len); -+ sheet = css_parser_parse_stylesheet (buffer, len, (gchar *) stream_data->internal_data); -+ g_free(stream_data->internal_data); -+ stream_data->internal_data = NULL; -+ -+ for (list = sheet->stat; list; list = list->next) { -+ CssStatement *statement = list->data; -+ HtmlStream *stream; -+ -+ switch (statement->type) { -+ case CSS_IMPORT_RULE: { -+ HtmlDocumentStreamData *stream_data_import; -+ gchar *url; -+ -+ url = css_value_to_string (statement->s.import_rule.url); -+ stream_data_import = g_new (HtmlDocumentStreamData, 1); -+ stream_data_import->document = stream_data->document; -+ stream_data_import->internal_data = g_strdup(url); -+ stream = html_stream_buffer_new (html_document_stylesheet_stream_close, stream_data_import); -+ g_signal_emit (G_OBJECT (document), document_signals [REQUEST_URL], 0, url, stream); -+ g_free (url); -+ break; -+ } -+ default: -+ break; -+ } -+ } - -+ g_free (stream_data); - document->stylesheets = g_slist_append (document->stylesheets, sheet); - - /* Restyle the document */ -@@ -179,9 +207,15 @@ html_document_node_inserted_traverser (H - - if (str && (strcasecmp (str, "stylesheet") == 0)) { - gchar *url = xmlGetProp (node->xmlnode, "href"); -- - if (url) { -- HtmlStream *stream = html_stream_buffer_new (html_document_stylesheet_stream_close, document); -+ HtmlDocumentStreamData *stream_data; -+ HtmlStream *stream; -+ -+ stream_data = g_new (HtmlDocumentStreamData, 1); -+ stream_data->document = document; -+ stream_data->internal_data = g_strdup(url); -+ -+ stream = html_stream_buffer_new (html_document_stylesheet_stream_close, stream_data); - - g_signal_emit (G_OBJECT (document), document_signals [REQUEST_URL], 0, url, stream); - } -@@ -242,12 +276,39 @@ html_document_node_inserted_traverser (H - - CssStylesheet *ss; - HtmlStyleChange style_change; -- -- ss = css_parser_parse_stylesheet (node->xmlnode->content, strlen (node->xmlnode->content)); -- document->stylesheets = g_slist_append (document->stylesheets, ss); -+ GSList *list; -+ -+ ss = css_parser_parse_stylesheet (node->xmlnode->content, strlen (node->xmlnode->content), NULL); -+ -+ for (list = ss->stat; list; list = list->next) { -+ CssStatement *statement = list->data; -+ HtmlStream *stream; -+ -+ switch (statement->type) { -+ case CSS_IMPORT_RULE: { -+ gchar *cssurl; -+ HtmlDocumentStreamData *stream_data; -+ -+ cssurl = css_value_to_string (statement->s.import_rule.url); -+ -+ stream_data = g_new (HtmlDocumentStreamData, 1); -+ stream_data->document = document; -+ stream_data->internal_data = g_strdup(cssurl); -+ -+ stream = html_stream_buffer_new (html_document_stylesheet_stream_close, stream_data); -+ g_signal_emit (G_OBJECT (document), document_signals [REQUEST_URL], 0, cssurl, stream); -+ g_free (cssurl); -+ break; -+ } -+ default: -+ break; -+ } -+ } -+ -+ document->stylesheets = g_slist_append ( document->stylesheets, ss); - - /* Restyle the document */ -- style_change = html_document_restyle_node (document, DOM_NODE (dom_Document__get_documentElement (document->dom_document)), NULL, TRUE); -+ style_change = html_document_restyle_node (document, DOM_NODE (dom_Document__get_documentElement ( document->dom_document)), NULL, TRUE); - g_signal_emit (G_OBJECT (document), document_signals [STYLE_UPDATED], 0, DOM_NODE (dom_Document__get_documentElement (document->dom_document)), style_change); - } - else if ((node->xmlnode->type == XML_TEXT_NODE || node->xmlnode->type == XML_COMMENT_NODE) && node->xmlnode->parent && strcasecmp (node->xmlnode->parent->name, "script") == 0) { -Index: libgtkhtml/document/htmldocument.h -=================================================================== ---- libgtkhtml/document/htmldocument.h.orig 2006-02-04 20:10:47.000000000 +0000 -+++ libgtkhtml/document/htmldocument.h 2006-02-05 18:19:17.000000000 +0000 -@@ -25,6 +25,7 @@ - - typedef struct _HtmlDocument HtmlDocument; - typedef struct _HtmlDocumentClass HtmlDocumentClass; -+typedef struct _HtmlDocumentStreamData HtmlDocumentStreamData; - - #include - -@@ -93,6 +94,10 @@ struct _HtmlDocumentClass { - gboolean (*dom_mouse_out) (HtmlDocument *document, DomEvent *event); - }; - -+struct _HtmlDocumentStreamData { -+ HtmlDocument *document; -+ gpointer internal_data; -+}; - - GType html_document_get_type (void); - -Index: libgtkhtml/layout/htmlboxblock.c -=================================================================== ---- libgtkhtml/layout/htmlboxblock.c.orig 2006-02-04 20:10:47.000000000 +0000 -+++ libgtkhtml/layout/htmlboxblock.c 2006-02-04 20:13:33.000000000 +0000 -@@ -100,17 +100,21 @@ html_real_box_block_update_geometry (Htm - HtmlBoxBlock *block = HTML_BOX_BLOCK (self); - gint full_width; - -+#if 0 - if (relayout->get_min_width || relayout->get_max_width) { -+#endif - - /* Only expand the width of the block box if the width is of type "auto" */ - if (HTML_BOX_GET_STYLE (self)->box->width.type == HTML_LENGTH_AUTO && line->width > *boxwidth) { -- -+ - *boxwidth = line->width; - block->containing_width = line->width; - self->width = *boxwidth + html_box_horizontal_mbp_sum (self); - block->force_relayout = TRUE; - } -+#if 0 - } -+#endif - full_width = MAX (line->width, line->full_width); - - if (full_width > block->full_width) -Index: libgtkhtml/view/htmlevent.c -=================================================================== ---- libgtkhtml/view/htmlevent.c.orig 2006-02-04 20:10:47.000000000 +0000 -+++ libgtkhtml/view/htmlevent.c 2006-02-04 20:13:33.000000000 +0000 -@@ -46,14 +46,48 @@ html_event_find_parent_dom_node (HtmlBox - static gboolean - html_event_xy_in_box (HtmlBox *box, gint tx, gint ty, gint x, gint y) - { -+ gint ox, oy; -+ gboolean rv; -+ -+ ox = box->x; -+ oy = box->y; -+ -+ rv = TRUE; -+ -+ if ((HTML_BOX_GET_STYLE (box)->position == HTML_POSITION_RELATIVE || -+ HTML_BOX_GET_STYLE (box)->position == HTML_POSITION_ABSOLUTE)) { -+ gint width = html_box_get_containing_block_width (box); -+ gint height = html_box_get_containing_block_height (box); -+ -+ if (HTML_BOX_GET_STYLE (box)->surround->position.left.type != HTML_LENGTH_AUTO) -+ box->x += html_length_get_value (&HTML_BOX_GET_STYLE (box)->surround->position.left, width); -+ else if (HTML_BOX_GET_STYLE (box)->surround->position.right.type != HTML_LENGTH_AUTO) { -+ if (HTML_BOX_GET_STYLE (box)->display == HTML_DISPLAY_INLINE) -+ box->x -= html_length_get_value (&HTML_BOX_GET_STYLE (box)->surround->position.right, width); -+ else -+ box->x += width - box->width - html_length_get_value (&HTML_BOX_GET_STYLE (box)->surround->position.right, width); -+ } -+ if (HTML_BOX_GET_STYLE (box)->surround->position.top.type != HTML_LENGTH_AUTO) -+ box->y += html_length_get_value (&HTML_BOX_GET_STYLE (box)->surround->position.top, height); -+ -+ else if (HTML_BOX_GET_STYLE (box)->surround->position.bottom.type != HTML_LENGTH_AUTO) { -+ if (HTML_BOX_GET_STYLE (box)->display == HTML_DISPLAY_INLINE) -+ box->y -= html_length_get_value (&HTML_BOX_GET_STYLE (box)->surround->position.bottom, height); -+ else -+ box->y += height - box->height - html_length_get_value (&HTML_BOX_GET_STYLE (box)->surround->position.bottom, height); -+ } -+ } - - if (x < box->x + tx || - x > box->x + tx + box->width || - y < box->y + ty || - y > box->y + ty + box->height) -- return FALSE; -+ rv = FALSE; -+ -+ box->x = ox; -+ box->y = oy; - -- return TRUE; -+ return rv; - } - - static void -@@ -64,12 +98,6 @@ html_event_find_box_traverser (HtmlBox * - box = self->children; - - while (box) { -- -- /* Ignore positioned boxes, because their ->x and->y positions is not their correct positions */ -- if (HTML_BOX_GET_STYLE (box)->position != HTML_POSITION_STATIC) { -- box = box->next; -- continue; -- } - /* These boxes always has x = 0, y = 0, w = 0 and h = 0 so we have to do - * a special case for these */ - if (HTML_IS_BOX_INLINE (box) || HTML_IS_BOX_TABLE_ROW_GROUP (box) || HTML_IS_BOX_FORM (box)) { -- cgit v1.2.3