mirror of
https://github.com/servo/servo.git
synced 2025-08-04 21:20:23 +01:00
Remove some convenience methods on Event
They don't need to exist anymore now that dom::eventdispatcher has been removed.
This commit is contained in:
parent
7dd5945237
commit
3dd3736b00
1 changed files with 22 additions and 64 deletions
|
@ -109,16 +109,16 @@ impl Event {
|
||||||
-> EventStatus {
|
-> EventStatus {
|
||||||
assert!(!self.dispatching());
|
assert!(!self.dispatching());
|
||||||
assert!(self.initialized());
|
assert!(self.initialized());
|
||||||
assert_eq!(self.phase(), EventPhase::None);
|
assert_eq!(self.phase.get(), EventPhase::None);
|
||||||
assert!(self.GetCurrentTarget().is_none());
|
assert!(self.GetCurrentTarget().is_none());
|
||||||
|
|
||||||
// Step 1.
|
// Step 1.
|
||||||
self.mark_as_dispatching();
|
self.dispatching.set(true);
|
||||||
|
|
||||||
// Step 2.
|
// Step 2.
|
||||||
self.set_target(target_override.unwrap_or(target));
|
self.target.set(Some(target_override.unwrap_or(target)));
|
||||||
|
|
||||||
if self.stop_propagation() {
|
if self.stop_propagation.get() {
|
||||||
// If the event's stop propagation flag is set, we can skip everything because
|
// If the event's stop propagation flag is set, we can skip everything because
|
||||||
// it prevents the calls of the invoke algorithm in the spec.
|
// it prevents the calls of the invoke algorithm in the spec.
|
||||||
|
|
||||||
|
@ -172,62 +172,20 @@ impl Event {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
|
||||||
pub fn set_current_target(&self, val: &EventTarget) {
|
|
||||||
self.current_target.set(Some(val));
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline]
|
|
||||||
pub fn set_target(&self, val: &EventTarget) {
|
|
||||||
self.target.set(Some(val));
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline]
|
|
||||||
pub fn phase(&self) -> EventPhase {
|
|
||||||
self.phase.get()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline]
|
|
||||||
pub fn set_phase(&self, val: EventPhase) {
|
|
||||||
self.phase.set(val)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline]
|
|
||||||
pub fn stop_propagation(&self) -> bool {
|
|
||||||
self.stop_propagation.get()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline]
|
|
||||||
pub fn stop_immediate(&self) -> bool {
|
|
||||||
self.stop_immediate.get()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline]
|
|
||||||
pub fn bubbles(&self) -> bool {
|
|
||||||
self.bubbles.get()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn dispatching(&self) -> bool {
|
pub fn dispatching(&self) -> bool {
|
||||||
self.dispatching.get()
|
self.dispatching.get()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
|
||||||
// https://dom.spec.whatwg.org/#concept-event-dispatch Step 1.
|
|
||||||
pub fn mark_as_dispatching(&self) {
|
|
||||||
assert!(!self.dispatching.get());
|
|
||||||
self.dispatching.set(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
// https://dom.spec.whatwg.org/#concept-event-dispatch Steps 10-12.
|
// https://dom.spec.whatwg.org/#concept-event-dispatch Steps 10-12.
|
||||||
pub fn clear_dispatching_flags(&self) {
|
fn clear_dispatching_flags(&self) {
|
||||||
assert!(self.dispatching.get());
|
assert!(self.dispatching.get());
|
||||||
|
|
||||||
self.dispatching.set(false);
|
self.dispatching.set(false);
|
||||||
self.stop_propagation.set(false);
|
self.stop_propagation.set(false);
|
||||||
self.stop_immediate.set(false);
|
self.stop_immediate.set(false);
|
||||||
self.set_phase(EventPhase::None);
|
self.phase.set(EventPhase::None);
|
||||||
self.current_target.set(None);
|
self.current_target.set(None);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -458,8 +416,8 @@ impl Runnable for SimpleEventRunnable {
|
||||||
// See dispatch_event.
|
// See dispatch_event.
|
||||||
// https://dom.spec.whatwg.org/#concept-event-dispatch
|
// https://dom.spec.whatwg.org/#concept-event-dispatch
|
||||||
fn dispatch_to_listeners(event: &Event, target: &EventTarget, event_path: &[&EventTarget]) {
|
fn dispatch_to_listeners(event: &Event, target: &EventTarget, event_path: &[&EventTarget]) {
|
||||||
assert!(!event.stop_propagation());
|
assert!(!event.stop_propagation.get());
|
||||||
assert!(!event.stop_immediate());
|
assert!(!event.stop_immediate.get());
|
||||||
|
|
||||||
let window = match Root::downcast::<Window>(target.global()) {
|
let window = match Root::downcast::<Window>(target.global()) {
|
||||||
Some(window) => {
|
Some(window) => {
|
||||||
|
@ -473,40 +431,40 @@ fn dispatch_to_listeners(event: &Event, target: &EventTarget, event_path: &[&Eve
|
||||||
};
|
};
|
||||||
|
|
||||||
// Step 5.
|
// Step 5.
|
||||||
event.set_phase(EventPhase::Capturing);
|
event.phase.set(EventPhase::Capturing);
|
||||||
|
|
||||||
// Step 6.
|
// Step 6.
|
||||||
for object in event_path.iter().rev() {
|
for object in event_path.iter().rev() {
|
||||||
invoke(window.r(), object, event, Some(ListenerPhase::Capturing));
|
invoke(window.r(), object, event, Some(ListenerPhase::Capturing));
|
||||||
if event.stop_propagation() {
|
if event.stop_propagation.get() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
assert!(!event.stop_propagation());
|
assert!(!event.stop_propagation.get());
|
||||||
assert!(!event.stop_immediate());
|
assert!(!event.stop_immediate.get());
|
||||||
|
|
||||||
// Step 7.
|
// Step 7.
|
||||||
event.set_phase(EventPhase::AtTarget);
|
event.phase.set(EventPhase::AtTarget);
|
||||||
|
|
||||||
// Step 8.
|
// Step 8.
|
||||||
invoke(window.r(), target, event, None);
|
invoke(window.r(), target, event, None);
|
||||||
if event.stop_propagation() {
|
if event.stop_propagation.get() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
assert!(!event.stop_propagation());
|
assert!(!event.stop_propagation.get());
|
||||||
assert!(!event.stop_immediate());
|
assert!(!event.stop_immediate.get());
|
||||||
|
|
||||||
if !event.bubbles() {
|
if !event.bubbles.get() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 9.1.
|
// Step 9.1.
|
||||||
event.set_phase(EventPhase::Bubbling);
|
event.phase.set(EventPhase::Bubbling);
|
||||||
|
|
||||||
// Step 9.2.
|
// Step 9.2.
|
||||||
for object in event_path {
|
for object in event_path {
|
||||||
invoke(window.r(), object, event, Some(ListenerPhase::Bubbling));
|
invoke(window.r(), object, event, Some(ListenerPhase::Bubbling));
|
||||||
if event.stop_propagation() {
|
if event.stop_propagation.get() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -518,13 +476,13 @@ fn invoke(window: Option<&Window>,
|
||||||
event: &Event,
|
event: &Event,
|
||||||
specific_listener_phase: Option<ListenerPhase>) {
|
specific_listener_phase: Option<ListenerPhase>) {
|
||||||
// Step 1.
|
// Step 1.
|
||||||
assert!(!event.stop_propagation());
|
assert!(!event.stop_propagation.get());
|
||||||
|
|
||||||
// Steps 2-3.
|
// Steps 2-3.
|
||||||
let listeners = object.get_listeners_for(&event.type_(), specific_listener_phase);
|
let listeners = object.get_listeners_for(&event.type_(), specific_listener_phase);
|
||||||
|
|
||||||
// Step 4.
|
// Step 4.
|
||||||
event.set_current_target(object);
|
event.current_target.set(Some(object));
|
||||||
|
|
||||||
// Step 5.
|
// Step 5.
|
||||||
inner_invoke(window, object, event, &listeners);
|
inner_invoke(window, object, event, &listeners);
|
||||||
|
@ -557,7 +515,7 @@ fn inner_invoke(window: Option<&Window>,
|
||||||
if let Some(window) = window {
|
if let Some(window) = window {
|
||||||
window.emit_timeline_marker(marker.end());
|
window.emit_timeline_marker(marker.end());
|
||||||
}
|
}
|
||||||
if event.stop_immediate() {
|
if event.stop_immediate.get() {
|
||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue