aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/script_task.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/script_task.rs')
-rw-r--r--components/script/script_task.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/components/script/script_task.rs b/components/script/script_task.rs
index dd5a3385ef8..696d0e10f8f 100644
--- a/components/script/script_task.rs
+++ b/components/script/script_task.rs
@@ -23,6 +23,7 @@ use dom::event::{Event, EventHelpers, EventBubbles, EventCancelable};
use dom::uievent::UIEvent;
use dom::eventtarget::{EventTarget, EventTargetHelpers};
use dom::keyboardevent::KeyboardEvent;
+use dom::mouseevent::MouseEvent;
use dom::node::{mod, Node, NodeHelpers, NodeDamage, NodeTypeId};
use dom::window::{Window, WindowHelpers};
use dom::worker::{Worker, TrustedWorkerAddress};
@@ -1168,6 +1169,33 @@ impl ScriptTask {
None => {}
}
+ if node_address.len() > 0 {
+ let top_most_node =
+ node::from_untrusted_node_address(self.js_runtime.ptr, node_address[0]).root();
+
+ if let Some(ref frame) = *page.frame() {
+ let window = frame.window.root();
+
+ let x = point.x.to_i32().unwrap_or(0);
+ let y = point.y.to_i32().unwrap_or(0);
+
+ let mouse_event = MouseEvent::new(*window,
+ "mousemove".to_string(),
+ true,
+ true,
+ Some(*window),
+ 0i32,
+ x, y, x, y,
+ false, false, false, false,
+ 0i16,
+ None).root();
+
+ let event: JSRef<Event> = EventCast::from_ref(*mouse_event);
+ let target: JSRef<EventTarget> = EventTargetCast::from_ref(*top_most_node);
+ target.dispatch_event(event);
+ }
+ }
+
for node_address in node_address.iter() {
let temp_node =
node::from_untrusted_node_address(self.js_runtime.ptr, *node_address);