mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
This fixes #4259. Dispatching the mousemove event for the top most node when the mouse moves while on top of it
This commit is contained in:
parent
b83b4932da
commit
75be44e744
1 changed files with 28 additions and 0 deletions
|
@ -23,6 +23,7 @@ use dom::event::{Event, EventHelpers, EventBubbles, EventCancelable};
|
||||||
use dom::uievent::UIEvent;
|
use dom::uievent::UIEvent;
|
||||||
use dom::eventtarget::{EventTarget, EventTargetHelpers};
|
use dom::eventtarget::{EventTarget, EventTargetHelpers};
|
||||||
use dom::keyboardevent::KeyboardEvent;
|
use dom::keyboardevent::KeyboardEvent;
|
||||||
|
use dom::mouseevent::MouseEvent;
|
||||||
use dom::node::{mod, Node, NodeHelpers, NodeDamage, NodeTypeId};
|
use dom::node::{mod, Node, NodeHelpers, NodeDamage, NodeTypeId};
|
||||||
use dom::window::{Window, WindowHelpers};
|
use dom::window::{Window, WindowHelpers};
|
||||||
use dom::worker::{Worker, TrustedWorkerAddress};
|
use dom::worker::{Worker, TrustedWorkerAddress};
|
||||||
|
@ -1168,6 +1169,33 @@ impl ScriptTask {
|
||||||
None => {}
|
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() {
|
for node_address in node_address.iter() {
|
||||||
let temp_node =
|
let temp_node =
|
||||||
node::from_untrusted_node_address(self.js_runtime.ptr, *node_address);
|
node::from_untrusted_node_address(self.js_runtime.ptr, *node_address);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue