mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-12-05 14:00:32 +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()))
|
, m_browsing_context(const_cast<HTML::BrowsingContext&>(layout_node.browsing_context()))
|
||||||
{
|
{
|
||||||
auto& computed_values = layout_node.computed_values();
|
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()) {
|
if (layout_node.is_grid_item() && computed_values.z_index().has_value()) {
|
||||||
// https://www.w3.org/TR/css-grid-2/#z-order
|
// https://www.w3.org/TR/css-grid-2/#z-order
|
||||||
// grid items with z_index should behave as if position were "relative"
|
// 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());
|
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)
|
void Paintable::set_dom_node(JS::GCPtr<DOM::Node> dom_node)
|
||||||
{
|
{
|
||||||
m_dom_node = dom_node;
|
m_dom_node = dom_node;
|
||||||
|
|
|
@ -56,7 +56,7 @@ class Paintable
|
||||||
public:
|
public:
|
||||||
virtual ~Paintable();
|
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_positioned() const { return m_positioned; }
|
||||||
[[nodiscard]] bool is_fixed_position() const { return m_fixed_position; }
|
[[nodiscard]] bool is_fixed_position() const { return m_fixed_position; }
|
||||||
[[nodiscard]] bool is_absolutely_positioned() const { return m_absolutely_positioned; }
|
[[nodiscard]] bool is_absolutely_positioned() const { return m_absolutely_positioned; }
|
||||||
|
@ -233,7 +233,6 @@ private:
|
||||||
|
|
||||||
SelectionState m_selection_state { SelectionState::None };
|
SelectionState m_selection_state { SelectionState::None };
|
||||||
|
|
||||||
bool m_visible : 1 { false };
|
|
||||||
bool m_positioned : 1 { false };
|
bool m_positioned : 1 { false };
|
||||||
bool m_fixed_position : 1 { false };
|
bool m_fixed_position : 1 { false };
|
||||||
bool m_absolutely_positioned : 1 { false };
|
bool m_absolutely_positioned : 1 { false };
|
||||||
|
|
Loading…
Reference in a new issue