summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2015-10-31 10:44:13 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2015-10-31 10:52:20 +0100
commit367ffae6cc52e00e7ce00952e3c81484a651c8f4 (patch)
treeedec5f8d86969171a8c6034b82ad1e5ffd680d85
parentbb8f6c2adbc9f78801d49d3c748d2abe9d4c43a9 (diff)
downloadlibdom-367ffae6cc52e00e7ce00952e3c81484a651c8f4.tar.gz
libdom-367ffae6cc52e00e7ce00952e3c81484a651c8f4.tar.bz2
Add a _FINISHED event action callback
We can then use this for JS to hook cleanups into place.
-rw-r--r--include/dom/events/document_event.h3
-rw-r--r--src/core/node.c8
2 files changed, 10 insertions, 1 deletions
diff --git a/include/dom/events/document_event.h b/include/dom/events/document_event.h
index 060ad00..3842fd5 100644
--- a/include/dom/events/document_event.h
+++ b/include/dom/events/document_event.h
@@ -67,7 +67,8 @@ typedef void (*dom_default_action_callback)(struct dom_event *evt, void *pw);
typedef enum {
DOM_DEFAULT_ACTION_STARTED = 0,
DOM_DEFAULT_ACTION_PREVENTED,
- DOM_DEFAULT_ACTION_END
+ DOM_DEFAULT_ACTION_END,
+ DOM_DEFAULT_ACTION_FINISHED
} dom_default_action_phase;
/**
diff --git a/src/core/node.c b/src/core/node.c
index 49033c0..704d7e5 100644
--- a/src/core/node.c
+++ b/src/core/node.c
@@ -2489,6 +2489,14 @@ cleanup:
}
free(targets);
+ if (dei->actions != NULL) {
+ dom_default_action_callback cb = dei->actions(evt->type,
+ DOM_DEFAULT_ACTION_FINISHED, &pw);
+ if (cb != NULL) {
+ cb(evt, pw);
+ }
+ }
+
return ret;
}