浏览代码

LibWeb: Don't search non-visible text for find in page results

Elements which are `display: none` or `visibility: hidden` are no
longer included in find in page results.
Tim Ledbetter 1 年之前
父节点
当前提交
a3a7a65b1c
共有 1 个文件被更改,包括 3 次插入0 次删除
  1. 3 0
      Userland/Libraries/LibWeb/DOM/Document.cpp

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

@@ -5129,6 +5129,9 @@ Vector<JS::Handle<DOM::Range>> Document::find_matching_text(String const& query,
         Vector<TextPosition> text_positions;
         Vector<TextPosition> text_positions;
         Vector<TextBlock> text_blocks;
         Vector<TextBlock> text_blocks;
         document_element()->layout_node()->for_each_in_inclusive_subtree([&](auto const& layout_node) {
         document_element()->layout_node()->for_each_in_inclusive_subtree([&](auto const& layout_node) {
+            if (layout_node.display().is_none() || !layout_node.paintable() || !layout_node.paintable()->is_visible())
+                return TraversalDecision::Continue;
+
             if (layout_node.is_block_container()) {
             if (layout_node.is_block_container()) {
                 if (!builder.is_empty()) {
                 if (!builder.is_empty()) {
                     text_blocks.append({ builder.to_string_without_validation(), text_positions });
                     text_blocks.append({ builder.to_string_without_validation(), text_positions });