Return an enum instead of a boolean from dispatch_event

Fixes #13196
This commit is contained in:
Adolfo Ochagavía 2016-09-23 17:51:24 +02:00
parent 821797d6f7
commit 6c8bfdb774
7 changed files with 45 additions and 17 deletions

View file

@ -23,7 +23,7 @@ use dom::bindings::str::DOMString;
use dom::element::Element;
use dom::errorevent::ErrorEvent;
use dom::event::{Event, EventBubbles, EventCancelable};
use dom::eventdispatcher::dispatch_event;
use dom::eventdispatcher::{EventStatus, dispatch_event};
use dom::node::document_from_node;
use dom::virtualmethods::VirtualMethods;
use dom::window::Window;
@ -300,11 +300,11 @@ impl EventTarget {
pub fn dispatch_event_with_target(&self,
target: &EventTarget,
event: &Event) -> bool {
event: &Event) -> EventStatus {
dispatch_event(self, Some(target), event)
}
pub fn dispatch_event(&self, event: &Event) -> bool {
pub fn dispatch_event(&self, event: &Event) -> EventStatus {
dispatch_event(self, None, event)
}
@ -560,7 +560,10 @@ impl EventTargetMethods for EventTarget {
return Err(Error::InvalidState);
}
event.set_trusted(false);
Ok(self.dispatch_event(event))
Ok(match self.dispatch_event(event) {
EventStatus::Canceled => false,
EventStatus::NotCanceled => true
})
}
}