diff options
author | Patrick Walton <pcwalton@mimiga.net> | 2015-05-04 12:49:46 -0700 |
---|---|---|
committer | Patrick Walton <pcwalton@mimiga.net> | 2015-05-07 15:48:14 -0700 |
commit | be8a5a29394ad16b087aeeb1ad4aa2cfd3fda672 (patch) | |
tree | 996bb60aa82420ddf7dc24f6453b65e31b20d1a5 /components/script/script_task.rs | |
parent | 92f46e3149df7de59aa5aa6700c1878958e2f273 (diff) | |
download | servo-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.rs | 12 |
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() |