diff options
Diffstat (limited to 'openembedded/packages/gtkhtml2/files/add-end-element-signal.patch')
-rw-r--r-- | openembedded/packages/gtkhtml2/files/add-end-element-signal.patch | 141 |
1 files changed, 141 insertions, 0 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 0000000000..66bfc16fd5 --- /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; + |