mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
Make EventTypeId reflect DOM inheritance hierarchy
This commit is contained in:
parent
50e1c967e4
commit
d3c60af5c6
4 changed files with 22 additions and 13 deletions
|
@ -10,6 +10,7 @@ use dom::bindings::global::GlobalRef;
|
||||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||||
use dom::bindings::utils::{Reflector, reflect_dom_object};
|
use dom::bindings::utils::{Reflector, reflect_dom_object};
|
||||||
use dom::eventtarget::{EventTarget, EventTargetHelpers};
|
use dom::eventtarget::{EventTarget, EventTargetHelpers};
|
||||||
|
use dom::uievent::{UIEventTypeId};
|
||||||
use util::str::DOMString;
|
use util::str::DOMString;
|
||||||
|
|
||||||
use std::borrow::ToOwned;
|
use std::borrow::ToOwned;
|
||||||
|
@ -32,12 +33,10 @@ pub enum EventPhase {
|
||||||
pub enum EventTypeId {
|
pub enum EventTypeId {
|
||||||
CustomEvent,
|
CustomEvent,
|
||||||
HTMLEvent,
|
HTMLEvent,
|
||||||
KeyboardEvent,
|
|
||||||
MessageEvent,
|
MessageEvent,
|
||||||
MouseEvent,
|
|
||||||
ProgressEvent,
|
ProgressEvent,
|
||||||
StorageEvent,
|
StorageEvent,
|
||||||
UIEvent,
|
UIEvent(UIEventTypeId),
|
||||||
ErrorEvent,
|
ErrorEvent,
|
||||||
CloseEvent
|
CloseEvent
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ use dom::bindings::global::GlobalRef;
|
||||||
use dom::bindings::js::{Root, RootedReference};
|
use dom::bindings::js::{Root, RootedReference};
|
||||||
use dom::bindings::utils::{Reflectable, reflect_dom_object};
|
use dom::bindings::utils::{Reflectable, reflect_dom_object};
|
||||||
use dom::event::{Event, EventTypeId};
|
use dom::event::{Event, EventTypeId};
|
||||||
use dom::uievent::UIEvent;
|
use dom::uievent::{UIEvent, UIEventTypeId};
|
||||||
use dom::window::Window;
|
use dom::window::Window;
|
||||||
use msg::constellation_msg;
|
use msg::constellation_msg;
|
||||||
use msg::constellation_msg::{Key, KeyModifiers};
|
use msg::constellation_msg::{Key, KeyModifiers};
|
||||||
|
@ -43,14 +43,14 @@ pub struct KeyboardEvent {
|
||||||
|
|
||||||
impl KeyboardEventDerived for Event {
|
impl KeyboardEventDerived for Event {
|
||||||
fn is_keyboardevent(&self) -> bool {
|
fn is_keyboardevent(&self) -> bool {
|
||||||
*self.type_id() == EventTypeId::KeyboardEvent
|
*self.type_id() == EventTypeId::UIEvent(UIEventTypeId::KeyboardEvent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl KeyboardEvent {
|
impl KeyboardEvent {
|
||||||
fn new_inherited() -> KeyboardEvent {
|
fn new_inherited() -> KeyboardEvent {
|
||||||
KeyboardEvent {
|
KeyboardEvent {
|
||||||
uievent: UIEvent::new_inherited(EventTypeId::KeyboardEvent),
|
uievent: UIEvent::new_inherited(UIEventTypeId::KeyboardEvent),
|
||||||
key: Cell::new(None),
|
key: Cell::new(None),
|
||||||
key_string: RefCell::new("".to_owned()),
|
key_string: RefCell::new("".to_owned()),
|
||||||
code: RefCell::new("".to_owned()),
|
code: RefCell::new("".to_owned()),
|
||||||
|
|
|
@ -12,7 +12,7 @@ use dom::bindings::js::{JS, MutNullableHeap, Root, RootedReference};
|
||||||
use dom::bindings::utils::reflect_dom_object;
|
use dom::bindings::utils::reflect_dom_object;
|
||||||
use dom::event::{Event, EventTypeId, EventBubbles, EventCancelable};
|
use dom::event::{Event, EventTypeId, EventBubbles, EventCancelable};
|
||||||
use dom::eventtarget::EventTarget;
|
use dom::eventtarget::EventTarget;
|
||||||
use dom::uievent::UIEvent;
|
use dom::uievent::{UIEvent, UIEventTypeId};
|
||||||
use dom::window::Window;
|
use dom::window::Window;
|
||||||
use util::opts;
|
use util::opts;
|
||||||
use util::str::DOMString;
|
use util::str::DOMString;
|
||||||
|
@ -37,14 +37,14 @@ pub struct MouseEvent {
|
||||||
|
|
||||||
impl MouseEventDerived for Event {
|
impl MouseEventDerived for Event {
|
||||||
fn is_mouseevent(&self) -> bool {
|
fn is_mouseevent(&self) -> bool {
|
||||||
*self.type_id() == EventTypeId::MouseEvent
|
*self.type_id() == EventTypeId::UIEvent(UIEventTypeId::MouseEvent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl MouseEvent {
|
impl MouseEvent {
|
||||||
fn new_inherited() -> MouseEvent {
|
fn new_inherited() -> MouseEvent {
|
||||||
MouseEvent {
|
MouseEvent {
|
||||||
uievent: UIEvent::new_inherited(EventTypeId::MouseEvent),
|
uievent: UIEvent::new_inherited(UIEventTypeId::MouseEvent),
|
||||||
screen_x: Cell::new(0),
|
screen_x: Cell::new(0),
|
||||||
screen_y: Cell::new(0),
|
screen_y: Cell::new(0),
|
||||||
client_x: Cell::new(0),
|
client_x: Cell::new(0),
|
||||||
|
|
|
@ -19,6 +19,13 @@ use util::str::DOMString;
|
||||||
use std::cell::Cell;
|
use std::cell::Cell;
|
||||||
use std::default::Default;
|
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
|
// https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html#interface-UIEvent
|
||||||
#[dom_struct]
|
#[dom_struct]
|
||||||
#[derive(HeapSizeOf)]
|
#[derive(HeapSizeOf)]
|
||||||
|
@ -30,21 +37,24 @@ pub struct UIEvent {
|
||||||
|
|
||||||
impl UIEventDerived for Event {
|
impl UIEventDerived for Event {
|
||||||
fn is_uievent(&self) -> bool {
|
fn is_uievent(&self) -> bool {
|
||||||
*self.type_id() == EventTypeId::UIEvent
|
match *self.type_id() {
|
||||||
|
EventTypeId::UIEvent(_) => true,
|
||||||
|
_ => false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UIEvent {
|
impl UIEvent {
|
||||||
pub fn new_inherited(type_id: EventTypeId) -> UIEvent {
|
pub fn new_inherited(type_id: UIEventTypeId) -> UIEvent {
|
||||||
UIEvent {
|
UIEvent {
|
||||||
event: Event::new_inherited(type_id),
|
event: Event::new_inherited(EventTypeId::UIEvent(type_id)),
|
||||||
view: Default::default(),
|
view: Default::default(),
|
||||||
detail: Cell::new(0),
|
detail: Cell::new(0),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new_uninitialized(window: &Window) -> Root<UIEvent> {
|
pub fn new_uninitialized(window: &Window) -> Root<UIEvent> {
|
||||||
reflect_dom_object(box UIEvent::new_inherited(EventTypeId::UIEvent),
|
reflect_dom_object(box UIEvent::new_inherited(UIEventTypeId::UIEvent),
|
||||||
GlobalRef::Window(window),
|
GlobalRef::Window(window),
|
||||||
UIEventBinding::Wrap)
|
UIEventBinding::Wrap)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue