aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout/fragment_tree/fragment.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/layout/fragment_tree/fragment.rs')
-rw-r--r--components/layout/fragment_tree/fragment.rs23
1 files changed, 20 insertions, 3 deletions
diff --git a/components/layout/fragment_tree/fragment.rs b/components/layout/fragment_tree/fragment.rs
index c81fd59e36b..10338c78743 100644
--- a/components/layout/fragment_tree/fragment.rs
+++ b/components/layout/fragment_tree/fragment.rs
@@ -183,19 +183,36 @@ impl Fragment {
}
}
- pub fn scrollable_overflow_for_parent(&self) -> PhysicalRect<Au> {
+ pub(crate) fn scrollable_overflow_for_parent(&self) -> PhysicalRect<Au> {
match self {
Fragment::Box(fragment) | Fragment::Float(fragment) => {
- fragment.borrow().scrollable_overflow_for_parent()
+ return fragment.borrow().scrollable_overflow_for_parent();
},
Fragment::AbsoluteOrFixedPositioned(_) => PhysicalRect::zero(),
- Fragment::Positioning(fragment) => fragment.borrow().scrollable_overflow,
+ Fragment::Positioning(fragment) => fragment.borrow().scrollable_overflow_for_parent(),
Fragment::Text(fragment) => fragment.borrow().rect,
Fragment::Image(fragment) => fragment.borrow().rect,
Fragment::IFrame(fragment) => fragment.borrow().rect,
}
}
+ pub(crate) fn calculate_scrollable_overflow_for_parent(&self) -> PhysicalRect<Au> {
+ self.calculate_scrollable_overflow();
+ self.scrollable_overflow_for_parent()
+ }
+
+ pub(crate) fn calculate_scrollable_overflow(&self) {
+ match self {
+ Fragment::Box(fragment) | Fragment::Float(fragment) => {
+ fragment.borrow_mut().calculate_scrollable_overflow()
+ },
+ Fragment::Positioning(fragment) => {
+ fragment.borrow_mut().calculate_scrollable_overflow()
+ },
+ _ => {},
+ }
+ }
+
pub(crate) fn cumulative_border_box_rect(&self) -> Option<PhysicalRect<Au>> {
match self {
Fragment::Box(fragment) | Fragment::Float(fragment) => {