aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/script_task.rs
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2015-05-04 12:49:46 -0700
committerPatrick Walton <pcwalton@mimiga.net>2015-05-07 15:48:14 -0700
commitbe8a5a29394ad16b087aeeb1ad4aa2cfd3fda672 (patch)
tree996bb60aa82420ddf7dc24f6453b65e31b20d1a5 /components/script/script_task.rs
parent92f46e3149df7de59aa5aa6700c1878958e2f273 (diff)
downloadservo-be8a5a29394ad16b087aeeb1ad4aa2cfd3fda672.tar.gz
servo-be8a5a29394ad16b087aeeb1ad4aa2cfd3fda672.zip
layout: Don't rerun selector matching unless we need to when resizing
the window.
Diffstat (limited to 'components/script/script_task.rs')
-rw-r--r--components/script/script_task.rs12
1 files changed, 7 insertions, 5 deletions
diff --git a/components/script/script_task.rs b/components/script/script_task.rs
index b7fc3198511..12ae363c95b 100644
--- a/components/script/script_task.rs
+++ b/components/script/script_task.rs
@@ -820,7 +820,7 @@ impl ScriptTask {
let window = inner_page.window().root();
if window.r().set_page_clip_rect_with_new_viewport(rect) {
let page = get_page(page, id);
- self.force_reflow(&*page, ReflowReason::Viewport);
+ self.rebuild_and_force_reflow(&*page, ReflowReason::Viewport);
}
return;
}
@@ -884,7 +884,7 @@ impl ScriptTask {
let needed_reflow = page.set_reflow_status(false);
if needed_reflow {
- self.force_reflow(&*page, ReflowReason::CachedPageNeededReflow);
+ self.rebuild_and_force_reflow(&*page, ReflowReason::CachedPageNeededReflow);
}
let window = page.window().root();
@@ -1200,8 +1200,8 @@ impl ScriptTask {
self.compositor.borrow_mut().scroll_fragment_point(pipeline_id, LayerId::null(), point);
}
- /// Reflows non-incrementally.
- fn force_reflow(&self, page: &Page, reason: ReflowReason) {
+ /// Reflows non-incrementally, rebuilding the entire layout tree in the process.
+ fn rebuild_and_force_reflow(&self, page: &Page, reason: ReflowReason) {
let document = page.document().root();
document.r().dirty_all_nodes();
let window = window_from_node(document.r()).root();
@@ -1322,7 +1322,9 @@ impl ScriptTask {
let page = get_page(&self.root_page(), pipeline_id);
let window = page.window().root();
window.r().set_window_size(new_size);
- self.force_reflow(&*page, ReflowReason::WindowResize);
+ window.r().force_reflow(ReflowGoal::ForDisplay,
+ ReflowQueryType::NoQuery,
+ ReflowReason::WindowResize);
let document = page.document().root();
let fragment_node = window.r().steal_fragment_name()