aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/document.rs3
-rw-r--r--components/script/dom/mouseevent.rs14
-rw-r--r--components/script/dom/webidls/MouseEvent.webidl3
-rw-r--r--components/script_traits/lib.rs2
4 files changed, 20 insertions, 2 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index 14fd3ebc06c..d074dca0d4e 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -647,12 +647,13 @@ impl<'a> DocumentHelpers<'a> for &'a Document {
// https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html#event-type-click
let x = point.x as i32;
let y = point.y as i32;
+ let clickCount = 1;
let event = MouseEvent::new(window.r(),
mouse_event_type_string,
EventBubbles::Bubbles,
EventCancelable::Cancelable,
Some(window.r()),
- 0i32,
+ clickCount,
x, y, x, y,
false, false, false, false,
0i16,
diff --git a/components/script/dom/mouseevent.rs b/components/script/dom/mouseevent.rs
index 44e6422ff1e..9e0b7119326 100644
--- a/components/script/dom/mouseevent.rs
+++ b/components/script/dom/mouseevent.rs
@@ -6,6 +6,7 @@ use dom::bindings::codegen::Bindings::MouseEventBinding;
use dom::bindings::codegen::Bindings::MouseEventBinding::MouseEventMethods;
use dom::bindings::codegen::Bindings::UIEventBinding::UIEventMethods;
use dom::bindings::codegen::InheritTypes::{EventCast, UIEventCast, MouseEventDerived};
+use dom::bindings::error::Error::NotSupported;
use dom::bindings::error::Fallible;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutNullableHeap, Root, RootedReference};
@@ -14,6 +15,7 @@ use dom::event::{Event, EventTypeId, EventBubbles, EventCancelable};
use dom::eventtarget::EventTarget;
use dom::uievent::UIEvent;
use dom::window::Window;
+use util::opts;
use util::str::DOMString;
use std::cell::Cell;
use std::default::Default;
@@ -154,6 +156,18 @@ impl<'a> MouseEventMethods for &'a MouseEvent {
self.related_target.get().map(Root::from_rooted)
}
+ // See discussion at:
+ // - https://github.com/servo/servo/issues/6643
+ // - https://bugzilla.mozilla.org/show_bug.cgi?id=1186125
+ // This returns the same result as current gecko.
+ fn GetWhich(self) -> Fallible<i32> {
+ if opts::experimental_enabled() {
+ Ok((self.button.get() + 1) as i32)
+ } else {
+ Err(NotSupported)
+ }
+ }
+
fn InitMouseEvent(self,
typeArg: DOMString,
canBubbleArg: bool,
diff --git a/components/script/dom/webidls/MouseEvent.webidl b/components/script/dom/webidls/MouseEvent.webidl
index a46a44938ca..a673cd60523 100644
--- a/components/script/dom/webidls/MouseEvent.webidl
+++ b/components/script/dom/webidls/MouseEvent.webidl
@@ -19,6 +19,9 @@ interface MouseEvent : UIEvent {
// Introduced in DOM Level 3
//readonly attribute unsigned short buttons;
//boolean getModifierState (DOMString keyArg);
+
+ [Throws]
+ readonly attribute long which;
};
// https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html#idl-def-MouseEventInit
diff --git a/components/script_traits/lib.rs b/components/script_traits/lib.rs
index 9c59de58f28..65f842f7350 100644
--- a/components/script_traits/lib.rs
+++ b/components/script_traits/lib.rs
@@ -45,7 +45,7 @@ use euclid::rect::Rect;
/// The address of a node. Layout sends these back. They must be validated via
/// `from_untrusted_node_address` before they can be used, because we do not trust layout.
#[allow(raw_pointer_derive)]
-#[derive(Copy, Clone)]
+#[derive(Copy, Clone, Debug)]
pub struct UntrustedNodeAddress(pub *const c_void);
unsafe impl Send for UntrustedNodeAddress {}