Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3584 sourcerer 1
/*
2
 * This file is part of libdom.
3
 * Licensed under the MIT License,
4
 *                http://www.opensource.org/licenses/mit-license.php
5
 * Copyright 2009 Bo Yang 
6
 */
7
 
8
#ifndef dom_internal_events_event_target_h_
9
#define dom_internal_events_event_target_h_
10
 
11
#include 
12
#include 
13
#include 
14
#include 
15
#include 
16
 
17
#include "events/dispatch.h"
18
 
19
#include "utils/list.h"
20
 
21
/**
22
 * Listener Entry
23
 */
24
struct listener_entry {
25
	struct list_entry list;
26
		/**< The listener list registered at the same
27
		 * EventTarget */
28
	dom_string *type; /**< Event type */
29
	dom_event_listener *listener;	/**< The EventListener */
30
	bool capture;	/**< Whether this listener is in capture phase */
31
};
32
 
33
/**
34
 * EventTarget internal class
35
 */
36
struct dom_event_target_internal {
37
	struct listener_entry *listeners;
38
			/**< The listeners of this EventTarget. */
39
};
40
 
41
typedef struct dom_event_target_internal dom_event_target_internal;
42
 
43
/* Entry for a EventTarget, used to record the bubbling list */
44
typedef struct dom_event_target_entry {
45
	struct list_entry entry;	/**< The list entry */
46
	dom_event_target *et;	/**< The node */
47
} dom_event_target_entry;
48
 
49
/**
50
 * Constructor and destructor: Since this object is not intended to be
51
 * allocated alone, it should be embedded into the Node object, there is
52
 * no constructor and destructor for it.
53
 */
54
 
55
/* Initialise this EventTarget */
56
dom_exception _dom_event_target_internal_initialise(
57
		dom_event_target_internal *eti);
58
 
59
/* Finalise this EventTarget */
60
void _dom_event_target_internal_finalise(dom_event_target_internal *eti);
61
 
62
dom_exception _dom_event_target_add_event_listener(
63
		dom_event_target_internal *eti,
64
		dom_string *type, struct dom_event_listener *listener,
65
		bool capture);
66
 
67
dom_exception _dom_event_target_remove_event_listener(
68
		dom_event_target_internal *eti,
69
		dom_string *type, struct dom_event_listener *listener,
70
		bool capture);
71
 
72
dom_exception _dom_event_target_add_event_listener_ns(
73
		dom_event_target_internal *eti,
74
		dom_string *namespace, dom_string *type,
75
		struct dom_event_listener *listener, bool capture);
76
 
77
dom_exception _dom_event_target_remove_event_listener_ns(
78
		dom_event_target_internal *eti,
79
		dom_string *namespace, dom_string *type,
80
		struct dom_event_listener *listener, bool capture);
81
 
82
dom_exception _dom_event_target_dispatch(dom_event_target *et,
83
		dom_event_target_internal *eti,
84
		struct dom_event *evt, dom_event_flow_phase phase,
85
		bool *success);
86
 
87
#endif