summaryrefslogtreecommitdiff
path: root/render/html.c
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2015-10-31 18:01:17 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2015-10-31 18:01:38 +0100
commit310162474a3690e00244a0edd87361bf1352be82 (patch)
tree984f863a876c300b5e73992a0ef702e771c9916e /render/html.c
parent4ca737408cc8c1777a01e362883886c230ee19dc (diff)
downloadnetsurf-310162474a3690e00244a0edd87361bf1352be82.tar.gz
netsurf-310162474a3690e00244a0edd87361bf1352be82.tar.bz2
Add fire_dom_event, it's in a bad place but we can move it later
Diffstat (limited to 'render/html.c')
-rw-r--r--render/html.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/render/html.c b/render/html.c
index 8722b1c4f..a21901775 100644
--- a/render/html.c
+++ b/render/html.c
@@ -70,6 +70,30 @@ static const char *html_types[] = {
"text/html"
};
+/* Exported interface, see html_internal.h */
+bool fire_dom_event(dom_string *type, dom_node *target,
+ bool bubbles, bool cancelable)
+{
+ dom_exception exc;
+ dom_event *evt;
+ bool result;
+
+ exc = dom_event_create(&evt);
+ if (exc != DOM_NO_ERR) return false;
+ exc = dom_event_init(evt, type, bubbles, cancelable);
+ if (exc != DOM_NO_ERR) {
+ dom_event_unref(evt);
+ return false;
+ }
+ LOG("Dispatching '%*s' against %p",
+ dom_string_length(type), dom_string_data(type), target);
+ exc = dom_event_target_dispatch_event(target, evt, &result);
+ if (exc != DOM_NO_ERR) {
+ result = false;
+ }
+ dom_event_unref(evt);
+ return result;
+}
/**
* Perform post-box-creation conversion of a document
@@ -645,6 +669,16 @@ dom_default_action_DOMNodeInserted_cb(struct dom_event *evt, void *pw)
dom_string_unref(name);
}
+ /* ensure javascript context is available */
+ if (htmlc->jscontext == NULL) {
+ union content_msg_data msg_data;
+
+ msg_data.jscontext = &htmlc->jscontext;
+ content_broadcast(&htmlc->base,
+ CONTENT_MSG_GETCTX,
+ msg_data);
+ LOG("javascript context %p ", htmlc->jscontext);
+ }
if (htmlc->jscontext != NULL) {
js_handle_new_element(htmlc->jscontext,
(dom_element *) node);