mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 12:47:45 +00:00
LibWeb: Change viewport ownership from BrowsingContext
to Navigable
This commit is contained in:
parent
4356d37b2c
commit
dd7bba66ed
23 changed files with 196 additions and 129 deletions
|
@ -137,7 +137,7 @@ Length::ResolutionContext Length::ResolutionContext::for_layout_node(Layout::Nod
|
|||
VERIFY(root_element);
|
||||
VERIFY(root_element->layout_node());
|
||||
return Length::ResolutionContext {
|
||||
.viewport_rect = node.browsing_context().viewport_rect(),
|
||||
.viewport_rect = node.navigable()->viewport_rect(),
|
||||
.font_metrics = { node.computed_values().font_size(), node.font().pixel_metrics(), node.line_height() },
|
||||
.root_font_metrics = { root_element->layout_node()->computed_values().font_size(), root_element->layout_node()->font().pixel_metrics(), root_element->layout_node()->line_height() },
|
||||
};
|
||||
|
@ -182,7 +182,7 @@ CSSPixels Length::to_px(Layout::Node const& layout_node) const
|
|||
}
|
||||
|
||||
VERIFY(is_viewport_relative());
|
||||
auto const& viewport_rect = layout_node.document().browsing_context()->viewport_rect();
|
||||
auto const& viewport_rect = layout_node.document().viewport_rect();
|
||||
return viewport_relative_length_to_px(viewport_rect);
|
||||
}
|
||||
|
||||
|
|
|
@ -2617,8 +2617,8 @@ void StyleComputer::invalidate_rule_cache()
|
|||
|
||||
CSSPixelRect StyleComputer::viewport_rect() const
|
||||
{
|
||||
if (auto const* browsing_context = document().browsing_context())
|
||||
return browsing_context->viewport_rect();
|
||||
if (auto const navigable = document().navigable())
|
||||
return navigable->viewport_rect();
|
||||
return {};
|
||||
}
|
||||
|
||||
|
|
|
@ -41,8 +41,8 @@ void ImageStyleValue::load_any_resources(DOM::Document& document)
|
|||
return;
|
||||
|
||||
// FIXME: Do less than a full repaint if possible?
|
||||
if (auto* browsing_context = m_document->browsing_context())
|
||||
browsing_context->set_needs_display();
|
||||
if (auto navigable = m_document->navigable())
|
||||
navigable->set_needs_display();
|
||||
|
||||
auto image_data = m_image_request->image_data();
|
||||
if (image_data->is_animated() && image_data->frame_count() > 1) {
|
||||
|
|
|
@ -46,8 +46,8 @@ double VisualViewport::offset_left() const
|
|||
return 0;
|
||||
|
||||
// 2. Otherwise, return the offset of the left edge of the visual viewport from the left edge of the layout viewport.
|
||||
VERIFY(m_document->browsing_context());
|
||||
return m_document->browsing_context()->viewport_rect().left().to_double();
|
||||
VERIFY(m_document->navigable());
|
||||
return m_document->viewport_rect().left().to_double();
|
||||
}
|
||||
|
||||
// https://drafts.csswg.org/cssom-view/#dom-visualviewport-offsettop
|
||||
|
@ -58,8 +58,8 @@ double VisualViewport::offset_top() const
|
|||
return 0;
|
||||
|
||||
// 2. Otherwise, return the offset of the top edge of the visual viewport from the top edge of the layout viewport.
|
||||
VERIFY(m_document->browsing_context());
|
||||
return m_document->browsing_context()->viewport_rect().top().to_double();
|
||||
VERIFY(m_document->navigable());
|
||||
return m_document->viewport_rect().top().to_double();
|
||||
}
|
||||
|
||||
// https://drafts.csswg.org/cssom-view/#dom-visualviewport-pageleft
|
||||
|
@ -95,8 +95,8 @@ double VisualViewport::width() const
|
|||
|
||||
// 2. Otherwise, return the width of the visual viewport
|
||||
// FIXME: excluding the width of any rendered vertical classic scrollbar that is fixed to the visual viewport.
|
||||
VERIFY(m_document->browsing_context());
|
||||
return m_document->browsing_context()->viewport_rect().width().to_double();
|
||||
VERIFY(m_document->navigable());
|
||||
return m_document->viewport_rect().width().to_double();
|
||||
}
|
||||
|
||||
// https://drafts.csswg.org/cssom-view/#dom-visualviewport-height
|
||||
|
@ -108,8 +108,8 @@ double VisualViewport::height() const
|
|||
|
||||
// 2. Otherwise, return the height of the visual viewport
|
||||
// FIXME: excluding the height of any rendered vertical classic scrollbar that is fixed to the visual viewport.
|
||||
VERIFY(m_document->browsing_context());
|
||||
return m_document->browsing_context()->viewport_rect().height().to_double();
|
||||
VERIFY(m_document->navigable());
|
||||
return m_document->viewport_rect().height().to_double();
|
||||
}
|
||||
|
||||
// https://drafts.csswg.org/cssom-view/#dom-visualviewport-scale
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue