mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-12-04 21:40:33 +00:00
LibWeb: Remove cache for Paintable::is_visible()
...because it depends on computed values that could be changed without rebuilding paintable tree.
This commit is contained in:
parent
61148e9bc2
commit
1036e104ef
Notes:
sideshowbarker
2024-07-17 04:10:16 +09:00
Author: https://github.com/kalenikaliaksandr Commit: https://github.com/SerenityOS/serenity/commit/1036e104ef Pull-request: https://github.com/SerenityOS/serenity/pull/23709
4 changed files with 30 additions and 4 deletions
14
Tests/LibWeb/Ref/change-opacity.html
Normal file
14
Tests/LibWeb/Ref/change-opacity.html
Normal file
|
@ -0,0 +1,14 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="match" href="reference/change-opacity-ref.html" />
|
||||
<style>
|
||||
#box {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: greenyellow;
|
||||
opacity: 0;
|
||||
}
|
||||
</style>
|
||||
<div id="box"></div>
|
||||
<script>
|
||||
document.getElementById("box").style.opacity = "1";
|
||||
</script>
|
9
Tests/LibWeb/Ref/reference/change-opacity-ref.html
Normal file
9
Tests/LibWeb/Ref/reference/change-opacity-ref.html
Normal file
|
@ -0,0 +1,9 @@
|
|||
<!DOCTYPE html>
|
||||
<style>
|
||||
#box {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: greenyellow;
|
||||
}
|
||||
</style>
|
||||
<div id="box"></div>
|
|
@ -17,8 +17,6 @@ Paintable::Paintable(Layout::Node const& layout_node)
|
|||
, m_browsing_context(const_cast<HTML::BrowsingContext&>(layout_node.browsing_context()))
|
||||
{
|
||||
auto& computed_values = layout_node.computed_values();
|
||||
m_visible = computed_values.visibility() == CSS::Visibility::Visible && computed_values.opacity() != 0;
|
||||
|
||||
if (layout_node.is_grid_item() && computed_values.z_index().has_value()) {
|
||||
// https://www.w3.org/TR/css-grid-2/#z-order
|
||||
// grid items with z_index should behave as if position were "relative"
|
||||
|
@ -48,6 +46,12 @@ void Paintable::visit_edges(Cell::Visitor& visitor)
|
|||
visitor.visit(m_containing_block.value());
|
||||
}
|
||||
|
||||
bool Paintable::is_visible() const
|
||||
{
|
||||
auto const& computed_values = this->computed_values();
|
||||
return computed_values.visibility() == CSS::Visibility::Visible && computed_values.opacity() != 0;
|
||||
}
|
||||
|
||||
void Paintable::set_dom_node(JS::GCPtr<DOM::Node> dom_node)
|
||||
{
|
||||
m_dom_node = dom_node;
|
||||
|
|
|
@ -56,7 +56,7 @@ class Paintable
|
|||
public:
|
||||
virtual ~Paintable();
|
||||
|
||||
[[nodiscard]] bool is_visible() const { return m_visible; }
|
||||
[[nodiscard]] bool is_visible() const;
|
||||
[[nodiscard]] bool is_positioned() const { return m_positioned; }
|
||||
[[nodiscard]] bool is_fixed_position() const { return m_fixed_position; }
|
||||
[[nodiscard]] bool is_absolutely_positioned() const { return m_absolutely_positioned; }
|
||||
|
@ -233,7 +233,6 @@ private:
|
|||
|
||||
SelectionState m_selection_state { SelectionState::None };
|
||||
|
||||
bool m_visible : 1 { false };
|
||||
bool m_positioned : 1 { false };
|
||||
bool m_fixed_position : 1 { false };
|
||||
bool m_absolutely_positioned : 1 { false };
|
||||
|
|
Loading…
Reference in a new issue