diff --git a/components/script/dom/event.rs b/components/script/dom/event.rs index 43250102b5d..77f7f7aa595 100644 --- a/components/script/dom/event.rs +++ b/components/script/dom/event.rs @@ -10,6 +10,7 @@ use dom::bindings::global::GlobalRef; use dom::bindings::js::{JS, MutNullableHeap, Root}; use dom::bindings::utils::{Reflector, reflect_dom_object}; use dom::eventtarget::{EventTarget, EventTargetHelpers}; +use dom::uievent::{UIEventTypeId}; use util::str::DOMString; use std::borrow::ToOwned; @@ -32,12 +33,10 @@ pub enum EventPhase { pub enum EventTypeId { CustomEvent, HTMLEvent, - KeyboardEvent, MessageEvent, - MouseEvent, ProgressEvent, StorageEvent, - UIEvent, + UIEvent(UIEventTypeId), ErrorEvent, CloseEvent } diff --git a/components/script/dom/keyboardevent.rs b/components/script/dom/keyboardevent.rs index ff41ad9ca3c..1dbbcb97a2b 100644 --- a/components/script/dom/keyboardevent.rs +++ b/components/script/dom/keyboardevent.rs @@ -11,7 +11,7 @@ use dom::bindings::global::GlobalRef; use dom::bindings::js::{Root, RootedReference}; use dom::bindings::utils::{Reflectable, reflect_dom_object}; use dom::event::{Event, EventTypeId}; -use dom::uievent::UIEvent; +use dom::uievent::{UIEvent, UIEventTypeId}; use dom::window::Window; use msg::constellation_msg; use msg::constellation_msg::{Key, KeyModifiers}; @@ -43,14 +43,14 @@ pub struct KeyboardEvent { impl KeyboardEventDerived for Event { fn is_keyboardevent(&self) -> bool { - *self.type_id() == EventTypeId::KeyboardEvent + *self.type_id() == EventTypeId::UIEvent(UIEventTypeId::KeyboardEvent) } } impl KeyboardEvent { fn new_inherited() -> KeyboardEvent { KeyboardEvent { - uievent: UIEvent::new_inherited(EventTypeId::KeyboardEvent), + uievent: UIEvent::new_inherited(UIEventTypeId::KeyboardEvent), key: Cell::new(None), key_string: RefCell::new("".to_owned()), code: RefCell::new("".to_owned()), diff --git a/components/script/dom/mouseevent.rs b/components/script/dom/mouseevent.rs index a160d7a6c1f..0a15c8ad640 100644 --- a/components/script/dom/mouseevent.rs +++ b/components/script/dom/mouseevent.rs @@ -12,7 +12,7 @@ use dom::bindings::js::{JS, MutNullableHeap, Root, RootedReference}; use dom::bindings::utils::reflect_dom_object; use dom::event::{Event, EventTypeId, EventBubbles, EventCancelable}; use dom::eventtarget::EventTarget; -use dom::uievent::UIEvent; +use dom::uievent::{UIEvent, UIEventTypeId}; use dom::window::Window; use util::opts; use util::str::DOMString; @@ -37,14 +37,14 @@ pub struct MouseEvent { impl MouseEventDerived for Event { fn is_mouseevent(&self) -> bool { - *self.type_id() == EventTypeId::MouseEvent + *self.type_id() == EventTypeId::UIEvent(UIEventTypeId::MouseEvent) } } impl MouseEvent { fn new_inherited() -> MouseEvent { MouseEvent { - uievent: UIEvent::new_inherited(EventTypeId::MouseEvent), + uievent: UIEvent::new_inherited(UIEventTypeId::MouseEvent), screen_x: Cell::new(0), screen_y: Cell::new(0), client_x: Cell::new(0), diff --git a/components/script/dom/uievent.rs b/components/script/dom/uievent.rs index 351a6d39443..b9d66082594 100644 --- a/components/script/dom/uievent.rs +++ b/components/script/dom/uievent.rs @@ -19,6 +19,13 @@ use util::str::DOMString; use std::cell::Cell; use std::default::Default; +#[derive(JSTraceable, PartialEq, HeapSizeOf)] +pub enum UIEventTypeId { + MouseEvent, + KeyboardEvent, + UIEvent, +} + // https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html#interface-UIEvent #[dom_struct] #[derive(HeapSizeOf)] @@ -30,21 +37,24 @@ pub struct UIEvent { impl UIEventDerived for Event { fn is_uievent(&self) -> bool { - *self.type_id() == EventTypeId::UIEvent + match *self.type_id() { + EventTypeId::UIEvent(_) => true, + _ => false + } } } impl UIEvent { - pub fn new_inherited(type_id: EventTypeId) -> UIEvent { + pub fn new_inherited(type_id: UIEventTypeId) -> UIEvent { UIEvent { - event: Event::new_inherited(type_id), + event: Event::new_inherited(EventTypeId::UIEvent(type_id)), view: Default::default(), detail: Cell::new(0), } } pub fn new_uninitialized(window: &Window) -> Root { - reflect_dom_object(box UIEvent::new_inherited(EventTypeId::UIEvent), + reflect_dom_object(box UIEvent::new_inherited(UIEventTypeId::UIEvent), GlobalRef::Window(window), UIEventBinding::Wrap) }