ソースを参照

LibWeb: Don't discard update_style_recursively() return value

This was causing us to miss layout invalidations. With this fixed, we
can remove the invalidation from Element::recompute_style() along with
the associated FIXME.

Thanks to Idan for spotting this! :^)
Andreas Kling 3 年 前
コミット
d71b0e4638

+ 2 - 2
Userland/Libraries/LibWeb/DOM/Document.cpp

@@ -595,7 +595,7 @@ void Document::update_layout()
     m_layout_update_timer->stop();
 }
 
-static bool update_style_recursively(DOM::Node& node)
+[[nodiscard]] static bool update_style_recursively(DOM::Node& node)
 {
     bool needs_relayout = false;
 
@@ -613,7 +613,7 @@ static bool update_style_recursively(DOM::Node& node)
         }
         node.for_each_child([&](auto& child) {
             if (child.needs_style_update() || child.child_needs_style_update())
-                update_style_recursively(child);
+                needs_relayout |= update_style_recursively(child);
             return IterationDecision::Continue;
         });
     }

+ 0 - 3
Userland/Libraries/LibWeb/DOM/Element.cpp

@@ -317,9 +317,6 @@ Element::NeedsRelayout Element::recompute_style()
         return NeedsRelayout::No;
     }
 
-    // FIXME: Get rid of this layout invalidation and let Document take care of it.
-    //        There seems to be some missing invalidation somewhere else that this is papering over.
-    document().invalidate_layout();
     return NeedsRelayout::Yes;
 }