aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/document.rs26
-rw-r--r--components/script/script_task.rs4
2 files changed, 17 insertions, 13 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index debd6c0831a..47b97797eb8 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -219,9 +219,13 @@ pub trait DocumentHelpers<'a> {
fn handle_click_event(self, js_runtime: *mut JSRuntime, _button: uint, point: Point2D<f32>);
fn dispatch_key_event(self, key: Key, state: KeyState,
modifiers: KeyModifiers, compositor: &mut Box<ScriptListener+'static>);
- /// Return need force reflow or not
- fn handle_mouse_move_event(self, js_runtime: *mut JSRuntime, point: Point2D<f32>,
- prev_mouse_over_targets: &mut Vec<JS<Node>>) -> bool;
+
+ /// Handles a mouse-move event coming from the compositor.
+ fn handle_mouse_move_event(self,
+ js_runtime: *mut JSRuntime,
+ point: Point2D<f32>,
+ prev_mouse_over_targets: &mut Vec<JS<Node>>);
+
fn set_current_script(self, script: Option<JSRef<HTMLScriptElement>>);
fn trigger_mozbrowser_event(self, event: MozBrowserEvent);
}
@@ -538,10 +542,10 @@ impl<'a> DocumentHelpers<'a> for JSRef<'a, Document> {
window.r().reflow(ReflowGoal::ForDisplay, ReflowQueryType::NoQuery, ReflowReason::MouseEvent);
}
- /// Return need force reflow or not
- fn handle_mouse_move_event(self, js_runtime: *mut JSRuntime, point: Point2D<f32>,
- prev_mouse_over_targets: &mut Vec<JS<Node>>) -> bool {
- let mut needs_reflow = false;
+ fn handle_mouse_move_event(self,
+ js_runtime: *mut JSRuntime,
+ point: Point2D<f32>,
+ prev_mouse_over_targets: &mut Vec<JS<Node>>) {
// Build a list of elements that are currently under the mouse.
let mouse_over_addresses = self.get_nodes_under_mouse(&point);
let mouse_over_targets: Vec<JS<Node>> = mouse_over_addresses.iter()
@@ -555,7 +559,6 @@ impl<'a> DocumentHelpers<'a> for JSRef<'a, Document> {
for target in prev_mouse_over_targets.iter() {
if !mouse_over_targets.contains(target) {
target.root().r().set_hover_state(false);
- needs_reflow = true;
}
}
@@ -567,7 +570,6 @@ impl<'a> DocumentHelpers<'a> for JSRef<'a, Document> {
let target_ref = target.r();
if !target_ref.get_hover_state() {
target_ref.set_hover_state(true);
- needs_reflow = true;
}
}
@@ -598,7 +600,11 @@ impl<'a> DocumentHelpers<'a> for JSRef<'a, Document> {
// Store the current mouse over targets for next frame
*prev_mouse_over_targets = mouse_over_targets;
- needs_reflow
+
+ let window = self.window.root();
+ window.r().reflow(ReflowGoal::ForDisplay,
+ ReflowQueryType::NoQuery,
+ ReflowReason::MouseEvent);
}
/// The entry point for all key processing for web content
diff --git a/components/script/script_task.rs b/components/script/script_task.rs
index a891455c0de..593bd40bdf0 100644
--- a/components/script/script_task.rs
+++ b/components/script/script_task.rs
@@ -1218,9 +1218,7 @@ impl ScriptTask {
let document = page.document().root();
let mouse_over_targets = &mut *self.mouse_over_targets.borrow_mut();
- if document.r().handle_mouse_move_event(self.js_runtime.ptr, point, mouse_over_targets) {
- self.force_reflow(&page, ReflowReason::MouseEvent)
- }
+ document.r().handle_mouse_move_event(self.js_runtime.ptr, point, mouse_over_targets);
}
KeyEvent(key, state, modifiers) => {