diff options
author | Bo Yang <struggleyb.nku@gmail.com> | 2009-08-13 09:33:24 +0000 |
---|---|---|
committer | Bo Yang <struggleyb.nku@gmail.com> | 2009-08-13 09:33:24 +0000 |
commit | 13fadb12fb400818e0ccb4c38b3bfce70ccfdad2 (patch) | |
tree | 19c55b39d97567a37b88b49aaaac13b21b9f24ee /src/events/event.h | |
parent | bf6bc398bd40e39a016725550f5b8446a01ee2d1 (diff) | |
download | libdom-13fadb12fb400818e0ccb4c38b3bfce70ccfdad2.tar.gz libdom-13fadb12fb400818e0ccb4c38b3bfce70ccfdad2.tar.bz2 |
Merge the Events module (branches/struggleyb/libdom-events) back to trunk. :)
svn path=/trunk/dom/; revision=9236
Diffstat (limited to 'src/events/event.h')
-rw-r--r-- | src/events/event.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/src/events/event.h b/src/events/event.h new file mode 100644 index 0000000..4d094e9 --- /dev/null +++ b/src/events/event.h @@ -0,0 +1,81 @@ +/* + * This file is part of libdom. + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2009 Bo Yang <struggleyb.nku@gmail.com> + */ + +#ifndef dom_internal_events_event_h_ +#define dom_internal_events_event_h_ + +#include <inttypes.h> + +#include <dom/events/event_target.h> +#include <dom/events/event.h> + +#include "utils/list.h" + +struct lwc_string_s; +struct dom_document; + +/* The private virtual table */ +struct dom_event_private_vtable { + void (*destroy)(dom_event *evt); +}; + +/** + * The Event Ojbect + */ +struct dom_event { + struct lwc_string_s *type; /**< The type of the event */ + dom_event_target *target; /**< The event target */ + dom_event_target *current; /**< The current event target */ + dom_event_flow_phase phase; /**< The event phase */ + bool bubble; /**< Whether this event is a bubbling event */ + bool cancelable; /**< Whether this event is cancelable */ + unsigned int timestamp; + /**< The timestamp this event is created */ + + struct lwc_string_s *namespace; + /**< The namespace of this event */ + + struct dom_document *doc; + /**< The document which create this event */ + + bool stop; /**< Whether stopPropagation is called */ + bool stop_now; /**< Whether stopImmediatePropagation is called */ + bool prevent_default; + /**< Whether the default action is prevented */ + + bool custom; /**< Whether this is a custom event */ + + uint32_t refcnt; /**< The reference count of this object */ + + struct dom_event_private_vtable *vtable; + /**< The private virtual function table of Event */ + bool in_dispatch; /**< Whether this event is in dispatch */ +}; + +/* Constructor */ +dom_exception _dom_event_create(struct dom_document *doc, + struct dom_event **evt); + +/* Destructor */ +void _dom_event_destroy(struct dom_document *doc, struct dom_event *evt); + +/* Initialise function */ +dom_exception _dom_event_initialise(struct dom_document *doc, + struct dom_event *evt); + +/* Finalise function */ +void _dom_event_finalise(struct dom_document *doc, struct dom_event *evt); + + +static inline void dom_event_destroy(struct dom_event *evt) +{ + evt->vtable->destroy(evt); +} +#define dom_event_destroy(e) dom_event_destroy((struct dom_event *) (e)) + +#endif + |