aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/uievent.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/script/dom/uievent.rs')
-rw-r--r--src/components/script/dom/uievent.rs52
1 files changed, 30 insertions, 22 deletions
diff --git a/src/components/script/dom/uievent.rs b/src/components/script/dom/uievent.rs
index 4ae1c6869b2..92e36edd6a5 100644
--- a/src/components/script/dom/uievent.rs
+++ b/src/components/script/dom/uievent.rs
@@ -3,47 +3,55 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use dom::bindings::codegen::UIEventBinding;
+use dom::bindings::codegen::InheritTypes::UIEventDerived;
+use dom::bindings::js::JS;
use dom::bindings::utils::Fallible;
use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object};
-use dom::node::AbstractNode;
-use dom::event::{AbstractEvent, Event, EventTypeId, UIEventTypeId};
+use dom::event::{Event, EventTypeId, UIEventTypeId};
+use dom::node::Node;
use dom::window::Window;
use dom::windowproxy::WindowProxy;
use servo_util::str::DOMString;
+#[deriving(Encodable)]
pub struct UIEvent {
- parent: Event,
- view: Option<@mut WindowProxy>,
+ event: Event,
+ view: Option<JS<WindowProxy>>,
detail: i32
}
+impl UIEventDerived for Event {
+ fn is_uievent(&self) -> bool {
+ self.type_id == UIEventTypeId
+ }
+}
+
impl UIEvent {
pub fn new_inherited(type_id: EventTypeId) -> UIEvent {
UIEvent {
- parent: Event::new_inherited(type_id),
+ event: Event::new_inherited(type_id),
view: None,
detail: 0
}
}
- pub fn new(window: @mut Window) -> AbstractEvent {
- let ev = reflect_dom_object(@mut UIEvent::new_inherited(UIEventTypeId),
- window,
- UIEventBinding::Wrap);
- Event::as_abstract(ev)
+ pub fn new(window: &JS<Window>) -> JS<UIEvent> {
+ reflect_dom_object(~UIEvent::new_inherited(UIEventTypeId),
+ window.get(),
+ UIEventBinding::Wrap)
}
- pub fn Constructor(owner: @mut Window,
+ pub fn Constructor(owner: &JS<Window>,
type_: DOMString,
- init: &UIEventBinding::UIEventInit) -> Fallible<AbstractEvent> {
- let ev = UIEvent::new(owner);
- ev.mut_uievent().InitUIEvent(type_, init.parent.bubbles, init.parent.cancelable,
- init.view, init.detail);
+ init: &UIEventBinding::UIEventInit) -> Fallible<JS<UIEvent>> {
+ let mut ev = UIEvent::new(owner);
+ ev.get_mut().InitUIEvent(type_, init.parent.bubbles, init.parent.cancelable,
+ init.view.clone(), init.detail);
Ok(ev)
}
- pub fn GetView(&self) -> Option<@mut WindowProxy> {
- self.view
+ pub fn GetView(&self) -> Option<JS<WindowProxy>> {
+ self.view.clone()
}
pub fn Detail(&self) -> i32 {
@@ -54,9 +62,9 @@ impl UIEvent {
type_: DOMString,
can_bubble: bool,
cancelable: bool,
- view: Option<@mut WindowProxy>,
+ view: Option<JS<WindowProxy>>,
detail: i32) {
- self.parent.InitEvent(type_, can_bubble, cancelable);
+ self.event.InitEvent(type_, can_bubble, cancelable);
self.view = view;
self.detail = detail;
}
@@ -86,7 +94,7 @@ impl UIEvent {
0
}
- pub fn GetRangeParent(&self) -> Option<AbstractNode> {
+ pub fn GetRangeParent(&self) -> Option<JS<Node>> {
//TODO
None
}
@@ -113,10 +121,10 @@ impl UIEvent {
impl Reflectable for UIEvent {
fn reflector<'a>(&'a self) -> &'a Reflector {
- self.parent.reflector()
+ self.event.reflector()
}
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
- self.parent.mut_reflector()
+ self.event.mut_reflector()
}
}