diff options
Diffstat (limited to 'openembedded/packages/gtkhtml2/files')
7 files changed, 413 insertions, 25 deletions
diff --git a/openembedded/packages/gtkhtml2/files/add-end-element-signal.patch b/openembedded/packages/gtkhtml2/files/add-end-element-signal.patch new file mode 100644 index 000000000..66bfc16fd --- /dev/null +++ b/openembedded/packages/gtkhtml2/files/add-end-element-signal.patch @@ -0,0 +1,141 @@ +Index: libgtkhtml/document/htmldocument.c +=================================================================== +--- libgtkhtml/document/htmldocument.c.orig 2006-02-11 05:21:28.000000000 +0000 ++++ libgtkhtml/document/htmldocument.c 2006-02-11 15:41:06.000000000 +0000 +@@ -48,6 +48,7 @@ enum { + + /* DOM change events */ + NODE_INSERTED, ++ NODE_FINISHED, + NODE_REMOVED, + TEXT_UPDATED, + STYLE_UPDATED, +@@ -536,6 +537,12 @@ html_document_new_node (HtmlParser *pars + } + + static void ++html_document_finished_node (HtmlParser *parser, DomNode *node, HtmlDocument *document) ++{ ++ g_signal_emit (G_OBJECT (document), document_signals [NODE_FINISHED], 0, node); ++} ++ ++static void + html_document_finalize (GObject *object) + { + HtmlDocument *document = HTML_DOCUMENT (object); +@@ -639,6 +646,16 @@ html_document_class_init (HtmlDocumentCl + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, + DOM_TYPE_NODE); ++ ++ document_signals [NODE_FINISHED] = ++ g_signal_new ("node_finished", ++ G_TYPE_FROM_CLASS (object_class), ++ G_SIGNAL_RUN_LAST, ++ G_STRUCT_OFFSET (HtmlDocumentClass, node_finished), ++ NULL, NULL, ++ g_cclosure_marshal_VOID__OBJECT, ++ G_TYPE_NONE, 1, ++ DOM_TYPE_NODE); + + document_signals [NODE_REMOVED] = + g_signal_new ("node_removed", +@@ -818,6 +835,9 @@ html_document_open_stream (HtmlDocument + g_signal_connect (document->parser, "done_parsing", + (GCallback) html_document_done_parsing, + document); ++ g_signal_connect (document->parser, "finished_node", ++ (GCallback) html_document_finished_node, ++ document); + + document->state = HTML_DOCUMENT_STATE_PARSING; + return TRUE; +Index: libgtkhtml/document/htmldocument.h +=================================================================== +--- libgtkhtml/document/htmldocument.h.orig 2006-02-11 05:21:28.000000000 +0000 ++++ libgtkhtml/document/htmldocument.h 2006-02-11 15:35:38.000000000 +0000 +@@ -80,6 +80,7 @@ struct _HtmlDocumentClass { + + /* DOM change events */ + void (*node_inserted) (HtmlDocument *document, DomNode *node); ++ void (*node_finished) (HtmlDocument *document, DomNode *node); + void (*node_removed) (HtmlDocument *document, DomNode *node); + void (*text_updated) (HtmlDocument *document, DomNode *node); + void (*style_updated) (HtmlDocument *document, DomNode *node, HtmlStyleChange style_change); +Index: libgtkhtml/document/htmlparser.c +=================================================================== +--- libgtkhtml/document/htmlparser.c.orig 2006-01-17 11:50:54.000000000 +0000 ++++ libgtkhtml/document/htmlparser.c 2006-02-11 17:21:20.000000000 +0000 +@@ -28,6 +28,7 @@ enum { + NEW_NODE, + DONE_PARSING, + PARSED_DOCUMENT_NODE, ++ FINISHED_NODE, + LAST_SIGNAL + }; + +@@ -84,8 +85,13 @@ static void + html_endElement (void *ctx, const xmlChar *name) + { + HtmlParser *parser = HTML_PARSER (ctx); ++ DomNode *node; + + xmlSAX2EndElement (parser->xmlctxt, name); ++ ++ node = dom_Node_mkref (xmlGetLastChild (parser->xmlctxt->node)); ++ if (node) ++ g_signal_emit (G_OBJECT (parser), parser_signals [FINISHED_NODE], 0, node); + } + + static void +@@ -241,6 +247,15 @@ html_parser_class_init (HtmlParserClass + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + ++ parser_signals [FINISHED_NODE] = ++ g_signal_new ("finished_node", ++ G_TYPE_FROM_CLASS (object_class), ++ G_SIGNAL_RUN_LAST, ++ G_STRUCT_OFFSET (HtmlParserClass, finished_node), ++ NULL, NULL, ++ g_cclosure_marshal_VOID__OBJECT, ++ G_TYPE_NONE, 1, ++ DOM_TYPE_NODE); + } + + static void +@@ -281,11 +296,11 @@ html_parser_set_type (HtmlParser *parser + /* FIXME: Free parser if existing */ + if (parser_type == HTML_PARSER_TYPE_HTML) { + parser->xmlctxt = htmlCreatePushParserCtxt (SAXHandler, parser, +- parser->chars, parser->res, NULL, 0); ++ NULL, 0, NULL, 0); + } + else { + parser->xmlctxt = xmlCreatePushParserCtxt (SAXHandler, parser, +- parser->chars, parser->res, NULL); ++ NULL, 0, NULL); + } + + +Index: libgtkhtml/document/htmlparser.h +=================================================================== +--- libgtkhtml/document/htmlparser.h.orig 2006-01-17 11:50:54.000000000 +0000 ++++ libgtkhtml/document/htmlparser.h 2006-02-11 18:57:51.000000000 +0000 +@@ -57,8 +57,6 @@ struct _HtmlParser { + + /* Used by libxml */ + xmlParserCtxtPtr xmlctxt; +- int res; +- char chars[10]; + + gboolean blocking; + DomNode *blocking_node; +@@ -71,6 +69,7 @@ struct _HtmlParserClass { + void (* done_parsing) (HtmlParser *parser); + void (* new_node) (HtmlParser *parser, DomNode *node); + void (* parsed_document_node) (HtmlParser *parser, DomDocument *document); ++ void (* finished_node) (HtmlParser *parser, DomNode *node); + }; + typedef struct _HtmlParserClass HtmlParserClass; + diff --git a/openembedded/packages/gtkhtml2/files/css-media.patch b/openembedded/packages/gtkhtml2/files/css-media.patch index a2d4d2b68..c5500ca2d 100644 --- a/openembedded/packages/gtkhtml2/files/css-media.patch +++ b/openembedded/packages/gtkhtml2/files/css-media.patch @@ -1,7 +1,7 @@ Index: libgtkhtml/css/cssmatcher.c =================================================================== ---- libgtkhtml/css/cssmatcher.c.orig 2006-02-05 18:19:15.000000000 +0000 -+++ libgtkhtml/css/cssmatcher.c 2006-02-05 18:20:15.000000000 +0000 +--- libgtkhtml/css/cssmatcher.c.orig 2006-02-11 05:18:03.000000000 +0000 ++++ libgtkhtml/css/cssmatcher.c 2006-02-11 05:21:28.000000000 +0000 @@ -2411,7 +2411,8 @@ css_matcher_apply_stylesheet (HtmlDocume CssStatement *stat = list->data; gint j; @@ -155,8 +155,8 @@ Index: libgtkhtml/css/cssmatcher.c Index: libgtkhtml/document/htmldocument.c =================================================================== ---- libgtkhtml/document/htmldocument.c.orig 2006-02-05 18:20:06.000000000 +0000 -+++ libgtkhtml/document/htmldocument.c 2006-02-05 18:20:15.000000000 +0000 +--- libgtkhtml/document/htmldocument.c.orig 2006-02-11 05:21:18.000000000 +0000 ++++ libgtkhtml/document/htmldocument.c 2006-02-11 05:21:28.000000000 +0000 @@ -142,9 +142,7 @@ html_document_stylesheet_stream_close (c if (!buffer) return; @@ -268,7 +268,7 @@ Index: libgtkhtml/document/htmldocument.c g_signal_connect (G_OBJECT (document->image_factory), "request_image", G_CALLBACK (html_document_request_image), document); -@@ -1150,3 +1157,24 @@ html_document_remove_stylesheet (HtmlDoc +@@ -1159,3 +1166,24 @@ html_document_remove_stylesheet (HtmlDoc return TRUE; } @@ -295,8 +295,8 @@ Index: libgtkhtml/document/htmldocument.c +} Index: libgtkhtml/document/htmldocument.h =================================================================== ---- libgtkhtml/document/htmldocument.h.orig 2006-02-05 18:20:06.000000000 +0000 -+++ libgtkhtml/document/htmldocument.h 2006-02-05 18:20:15.000000000 +0000 +--- libgtkhtml/document/htmldocument.h.orig 2006-02-11 05:20:51.000000000 +0000 ++++ libgtkhtml/document/htmldocument.h 2006-02-11 05:21:28.000000000 +0000 @@ -64,6 +64,8 @@ struct _HtmlDocument { DomNode *hover_node; DomNode *active_node; @@ -316,7 +316,7 @@ Index: libgtkhtml/document/htmldocument.h GType html_document_get_type (void); @@ -116,6 +119,10 @@ DomNode *html_document_find_anchor void html_document_add_stylesheet (HtmlDocument *document, CssStylesheet *stylesheet); - gboolean html_document_remove_stylesheet (HtmlDocument *document, CssStylesheet *stylesheet); + void html_document_remove_stylesheet (HtmlDocument *document, CssStylesheet *stylesheet); +void html_document_set_media_type (HtmlDocument *document, const gchar *type); +const gchar *html_document_get_media_type (HtmlDocument *document); @@ -327,8 +327,8 @@ Index: libgtkhtml/document/htmldocument.h #endif /* __HTMLDOCUMENT_H__ */ Index: libgtkhtml/css/cssparser.c =================================================================== ---- libgtkhtml/css/cssparser.c.orig 2006-02-05 18:19:15.000000000 +0000 -+++ libgtkhtml/css/cssparser.c 2006-02-05 18:20:15.000000000 +0000 +--- libgtkhtml/css/cssparser.c.orig 2006-02-11 05:18:03.000000000 +0000 ++++ libgtkhtml/css/cssparser.c 2006-02-11 05:21:28.000000000 +0000 @@ -688,6 +688,32 @@ css_parser_parse_value (const gchar *buf return pos; } @@ -441,8 +441,8 @@ Index: libgtkhtml/css/cssparser.c if (pos == -1) Index: libgtkhtml/css/cssparser.h =================================================================== ---- libgtkhtml/css/cssparser.h.orig 2006-02-05 18:19:15.000000000 +0000 -+++ libgtkhtml/css/cssparser.h 2006-02-05 18:20:15.000000000 +0000 +--- libgtkhtml/css/cssparser.h.orig 2006-02-11 05:18:03.000000000 +0000 ++++ libgtkhtml/css/cssparser.h 2006-02-11 05:21:28.000000000 +0000 @@ -30,7 +30,7 @@ G_BEGIN_DECLS @@ -454,8 +454,8 @@ Index: libgtkhtml/css/cssparser.h G_END_DECLS Index: libgtkhtml/css/cssstylesheet.h =================================================================== ---- libgtkhtml/css/cssstylesheet.h.orig 2006-02-05 18:19:15.000000000 +0000 -+++ libgtkhtml/css/cssstylesheet.h 2006-02-05 18:20:15.000000000 +0000 +--- libgtkhtml/css/cssstylesheet.h.orig 2006-02-11 05:18:03.000000000 +0000 ++++ libgtkhtml/css/cssstylesheet.h 2006-02-11 05:21:28.000000000 +0000 @@ -99,6 +99,7 @@ struct _CssStatement { CssValue *url; gboolean fetched; diff --git a/openembedded/packages/gtkhtml2/files/css-stylesheet-user.patch b/openembedded/packages/gtkhtml2/files/css-stylesheet-user.patch index 01c983895..4fe7e9045 100644 --- a/openembedded/packages/gtkhtml2/files/css-stylesheet-user.patch +++ b/openembedded/packages/gtkhtml2/files/css-stylesheet-user.patch @@ -1,8 +1,8 @@ Index: libgtkhtml/document/htmldocument.c =================================================================== ---- libgtkhtml/document/htmldocument.c.orig 2006-02-05 18:19:17.000000000 +0000 -+++ libgtkhtml/document/htmldocument.c 2006-02-05 18:20:06.000000000 +0000 -@@ -1122,3 +1122,31 @@ html_document_find_anchor (HtmlDocument +--- libgtkhtml/document/htmldocument.c.orig 2006-02-11 05:06:30.000000000 +0000 ++++ libgtkhtml/document/htmldocument.c 2006-02-11 05:21:18.000000000 +0000 +@@ -1122,3 +1122,40 @@ html_document_find_anchor (HtmlDocument else return NULL; } @@ -12,7 +12,7 @@ Index: libgtkhtml/document/htmldocument.c +{ + HtmlStyleChange style_change; + -+ g_return_val_if_fail (HTML_IS_DOCUMENT (document), NULL); ++ g_return_if_fail (HTML_IS_DOCUMENT (document)); + + /* Note: @import not supported for user stylesheets, due to + * complications it would cause with removal. @@ -20,30 +20,39 @@ Index: libgtkhtml/document/htmldocument.c + + document->stylesheets = g_slist_append (document->stylesheets, sheet); + -+ 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); ++ if (document->dom_document) { ++ 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); ++ } +} + -+gboolean ++void +html_document_remove_stylesheet (HtmlDocument *document, CssStylesheet *stylesheet) +{ -+ g_return_val_if_fail (stylesheet && HTML_IS_DOCUMENT (document), FALSE); ++ HtmlStyleChange style_change; ++ ++ g_return_if_fail (stylesheet && HTML_IS_DOCUMENT (document)); + + document->stylesheets = g_slist_remove (document->stylesheets, stylesheet); + ++ if (document->dom_document) { ++ 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); ++ } ++ + return TRUE; +} + Index: libgtkhtml/document/htmldocument.h =================================================================== ---- libgtkhtml/document/htmldocument.h.orig 2006-02-05 18:19:17.000000000 +0000 -+++ libgtkhtml/document/htmldocument.h 2006-02-05 18:20:06.000000000 +0000 +--- libgtkhtml/document/htmldocument.h.orig 2006-02-11 05:06:30.000000000 +0000 ++++ libgtkhtml/document/htmldocument.h 2006-02-11 05:20:51.000000000 +0000 @@ -113,6 +113,9 @@ void html_document_update_active_nod void html_document_update_focus_element (HtmlDocument *document, DomElement *element); DomNode *html_document_find_anchor (HtmlDocument *doc, const gchar *anchor); +void html_document_add_stylesheet (HtmlDocument *document, CssStylesheet *stylesheet); -+gboolean html_document_remove_stylesheet (HtmlDocument *document, CssStylesheet *stylesheet); ++void html_document_remove_stylesheet (HtmlDocument *document, CssStylesheet *stylesheet); + G_END_DECLS diff --git a/openembedded/packages/gtkhtml2/files/fix-infinite-loop.patch b/openembedded/packages/gtkhtml2/files/fix-infinite-loop.patch new file mode 100644 index 000000000..c2f36daf8 --- /dev/null +++ b/openembedded/packages/gtkhtml2/files/fix-infinite-loop.patch @@ -0,0 +1,91 @@ +Index: libgtkhtml/layout/htmlbox.c +=================================================================== +--- libgtkhtml/layout/htmlbox.c.orig 2006-02-08 23:43:30.000000000 +0000 ++++ libgtkhtml/layout/htmlbox.c 2006-02-11 04:49:55.000000000 +0000 +@@ -873,26 +873,21 @@ html_box_check_min_max_width_height (Htm + *boxheight = html_length_get_value (&HTML_BOX_GET_STYLE (self)->box->max_height, 0); + } + +- /* Maintain aspect ratio if it's an image - bias towards making image smaller */ ++ /* Maintain aspect ratio if it's an image */ + if (HTML_IS_BOX_IMAGE (self)) { + if ((*boxwidth > old_width) && (*boxheight >= old_height)) { + *boxheight = *boxheight * (gdouble)(*boxwidth / (gdouble)old_width); +- html_box_check_min_max_width_height (self, boxwidth, boxheight); + return; + } +- +- if ((*boxheight > old_height) && (*boxwidth >= old_width)) { ++ else if ((*boxheight > old_height) && (*boxwidth >= old_width)) { + *boxwidth = *boxwidth * (gdouble)(*boxheight / (gdouble)old_height); +- html_box_check_min_max_width_height (self, boxwidth, boxheight); + return; + } +- +- if ((*boxwidth < old_width) && (*boxheight <= old_height)) { ++ else if ((*boxwidth < old_width) && (*boxheight <= old_height)) { + *boxheight = *boxheight * (gdouble)(*boxwidth / (gdouble)old_width); + return; + } +- +- if ((*boxheight < old_height) && (*boxwidth <= old_width)) { ++ else if ((*boxheight < old_height) && (*boxwidth <= old_width)) { + *boxwidth = *boxwidth * (gdouble)(*boxheight / (gdouble)old_height); + return; + } +Index: libgtkhtml/layout/html/htmlboximage.c +=================================================================== +--- libgtkhtml/layout/html/htmlboximage.c.orig 2006-02-08 23:41:33.000000000 +0000 ++++ libgtkhtml/layout/html/htmlboximage.c 2006-02-11 05:01:36.000000000 +0000 +@@ -176,8 +176,26 @@ html_box_image_relayout (HtmlBox *box, H + + html_box_check_min_max_width_height (box, &width, &height); + +- if (old_width != width || old_height != height) ++ /* Guard against oscillation - When max-width/height alters the ++ * size of an image, the aspect ratio is maintained, but this ++ * can cause an infinite resizing loop as the size oscillates ++ * between two sizes that alternately require and don't ++ * require a scrollbar. ++ */ ++ if ((old_width != width || old_height != height) && (width != image->last_width[1] || height != image->last_height[1])) { + html_box_image_update_scaled_pixbuf (image, width, height); ++ image->last_width[1] = image->last_width[0]; ++ image->last_height[1] = image->last_height[0]; ++ image->last_width[0] = width; ++ image->last_height[0] = height; ++ } else { ++ image->last_width[1] = image->last_width[0]; ++ image->last_height[1] = image->last_height[0]; ++ image->last_width[0] = width; ++ image->last_height[0] = height; ++ width = old_width; ++ height = old_height; ++ } + } + else { + if (style->width.type != HTML_LENGTH_AUTO) +@@ -239,6 +257,10 @@ html_box_image_init (HtmlBoxImage *image + image->content_height = 20; + image->image = NULL; + image->scaled_pixbuf = NULL; ++ image->last_width[0] = 0; ++ image->last_height[0] = 0; ++ image->last_width[1] = 0; ++ image->last_height[1] = 0; + } + + GType +Index: libgtkhtml/layout/html/htmlboximage.h +=================================================================== +--- libgtkhtml/layout/html/htmlboximage.h.orig 2001-08-05 12:45:30.000000000 +0100 ++++ libgtkhtml/layout/html/htmlboximage.h 2006-02-11 04:40:44.000000000 +0000 +@@ -49,6 +49,8 @@ struct _HtmlBoxImage { + GdkPixbuf *scaled_pixbuf; + gboolean updated; + HtmlView *view; ++ ++ gint last_width[2], last_height[2]; + }; + + struct _HtmlBoxImageClass { diff --git a/openembedded/packages/gtkhtml2/files/fix-margin-inherit.patch b/openembedded/packages/gtkhtml2/files/fix-margin-inherit.patch new file mode 100644 index 000000000..16337b7cc --- /dev/null +++ b/openembedded/packages/gtkhtml2/files/fix-margin-inherit.patch @@ -0,0 +1,25 @@ +Index: libgtkhtml/layout/htmlbox.c +=================================================================== +--- libgtkhtml/layout/htmlbox.c.orig 2006-02-06 01:50:52.000000000 +0000 ++++ libgtkhtml/layout/htmlbox.c 2006-02-06 01:53:16.000000000 +0000 +@@ -151,17 +151,13 @@ simple_margin (HtmlStyle *style) + static gboolean + need_containing_width (HtmlBox *box, gint width) + { +- HtmlStyle *style; +- + if (width > 0) + return FALSE; + +- style = HTML_BOX_GET_STYLE (box); +- +- if (simple_margin (style)) +- return FALSE; ++ if (html_box_get_containing_block (box)) ++ return TRUE; + +- return TRUE; ++ return FALSE; + } + + gint diff --git a/openembedded/packages/gtkhtml2/files/fix-recreation2.patch b/openembedded/packages/gtkhtml2/files/fix-recreation2.patch new file mode 100644 index 000000000..92a8c8fd2 --- /dev/null +++ b/openembedded/packages/gtkhtml2/files/fix-recreation2.patch @@ -0,0 +1,93 @@ +Index: libgtkhtml/view/htmlview.c +=================================================================== +--- libgtkhtml/view/htmlview.c.orig 2006-02-11 05:06:22.000000000 +0000 ++++ libgtkhtml/view/htmlview.c 2006-02-11 05:07:01.000000000 +0000 +@@ -2135,38 +2135,31 @@ html_view_style_updated (HtmlDocument *d + HtmlBox *new_box = NULL; + + /* Don't replace boxes where display: none has been set */ +- if (style->display == HTML_DISPLAY_NONE) { +- html_view_removed (document, node, view); ++ if (!style || style->display == HTML_DISPLAY_NONE) + break; +- } + + new_box = html_box_factory_new_box (view, node, TRUE); + g_assert (new_box); + + new_box->dom_node = node; + g_object_add_weak_pointer (G_OBJECT (node), (gpointer *)&(new_box->dom_node)); ++ html_box_handle_html_properties (new_box, node->xmlnode); + new_box->next = box->next; + new_box->prev = box->prev; + new_box->parent = box->parent; +- new_box->children = box->children; + +- if (box->next) box->next->prev = new_box; +- if (box->prev) box->prev->next = new_box; +- if (box->parent) ++ if (box->parent) { + if (box->parent->children == box) + box->parent->children = new_box; ++ } ++ if (box->next) box->next->prev = new_box; ++ if (box->prev) box->prev->next = new_box; + if (box->children) { + HtmlBox *child = box->children; + while (child) { +- if (child->parent == box) +- child->parent = new_box; +- child = child->prev; +- } +- child = box->children->next; +- while (child) { +- if (child->parent == box) +- child->parent = new_box; +- child = child->next; ++ HtmlBox *temp = child->next; ++ html_box_append_child (new_box, child); ++ child = temp; + } + } + +@@ -2176,7 +2169,6 @@ html_view_style_updated (HtmlDocument *d + html_view_remove_layout_box (view, node); + g_object_unref (box); + +- html_box_handle_html_properties (new_box, node->xmlnode); + html_view_add_layout_box (view, node, new_box); + html_view_relayout_callback (document, node, view); + break; +Index: libgtkhtml/graphics/htmlimage.c +=================================================================== +--- libgtkhtml/graphics/htmlimage.c.orig 2006-02-11 05:06:22.000000000 +0000 ++++ libgtkhtml/graphics/htmlimage.c 2006-02-11 05:06:34.000000000 +0000 +@@ -142,6 +142,7 @@ static void + html_image_init (HtmlImage *image) + { + image->pixbuf = NULL; ++ image->stream = NULL; + image->broken = FALSE; + image->loading = FALSE; + image->loader = gdk_pixbuf_loader_new (); +Index: libgtkhtml/graphics/htmlimagefactory.c +=================================================================== +--- libgtkhtml/graphics/htmlimagefactory.c.orig 2006-02-11 05:06:22.000000000 +0000 ++++ libgtkhtml/graphics/htmlimagefactory.c 2006-02-11 05:07:43.000000000 +0000 +@@ -146,7 +146,7 @@ html_image_factory_get_image (HtmlImageF + + image = HTML_IMAGE (g_object_new (HTML_IMAGE_TYPE, NULL)); + +- g_object_weak_ref (G_OBJECT (image), (GWeakNotify)html_image_shutdown, image_factory); ++ g_signal_connect_swapped (G_OBJECT (image), "last_unref", G_CALLBACK (html_image_shutdown), image_factory); + + image->loading = TRUE; + +@@ -154,6 +154,7 @@ html_image_factory_get_image (HtmlImageF + image); + + image->stream = stream; ++ g_object_add_weak_pointer (G_OBJECT (stream), (gpointer *) &(image->stream)); + g_object_add_weak_pointer (G_OBJECT (image), (gpointer *) &(stream->user_data)); + + g_signal_emit (G_OBJECT (image_factory), image_factory_signals [REQUEST_IMAGE], 0, uri, stream); diff --git a/openembedded/packages/gtkhtml2/files/fix-style-change.patch b/openembedded/packages/gtkhtml2/files/fix-style-change.patch new file mode 100644 index 000000000..865f2692a --- /dev/null +++ b/openembedded/packages/gtkhtml2/files/fix-style-change.patch @@ -0,0 +1,29 @@ +Index: libgtkhtml/view/htmlview.c +=================================================================== +--- libgtkhtml/view/htmlview.c.orig 2006-02-11 04:45:41.000000000 +0000 ++++ libgtkhtml/view/htmlview.c 2006-02-11 04:45:42.000000000 +0000 +@@ -2286,9 +2286,7 @@ html_view_realize (GtkWidget *widget) + * GtkLayout uses the bg color for background but we want + * to use base color. + */ +- widget->style = gtk_style_copy (widget->style); +- widget->style->bg[GTK_STATE_NORMAL] = +- widget->style->base[GTK_STATE_NORMAL]; ++ gtk_widget_modify_bg (widget, GTK_STATE_NORMAL, &widget->style->base[GTK_STATE_NORMAL]); + /* + * Store the font size so we can adjust size of HtmlFontSpecification + * if the size changes. +@@ -3189,9 +3187,10 @@ html_view_style_set (GtkWidget *widget, + "focus-line-width", &focus_width, + NULL); + +- +- widget->style->bg[GTK_STATE_NORMAL] = +- widget->style->base[GTK_STATE_NORMAL]; ++ if (!gdk_color_equal (&widget->style->bg[GTK_STATE_NORMAL], &widget->style->base[GTK_STATE_NORMAL])) { ++ gtk_widget_modify_bg (widget, GTK_STATE_NORMAL, &widget->style->base[GTK_STATE_NORMAL]); ++ return; ++ } + fsize = pango_font_description_get_size (widget->style->font_desc) / (gfloat) PANGO_SCALE; + new_isize = (gint) fsize; + old_isize = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "html-view-font-size")); |