OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights |
7 * reserved. | 7 * reserved. |
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. | 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. |
9 * (http://www.torchmobile.com/) | 9 * (http://www.torchmobile.com/) |
10 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 10 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
(...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
487 } | 487 } |
488 | 488 |
489 void DocumentMarkerController::RemoveSpellingMarkersUnderWords( | 489 void DocumentMarkerController::RemoveSpellingMarkersUnderWords( |
490 const Vector<String>& words) { | 490 const Vector<String>& words) { |
491 for (auto& node_markers : markers_) { | 491 for (auto& node_markers : markers_) { |
492 const Node& node = *node_markers.key; | 492 const Node& node = *node_markers.key; |
493 if (!node.IsTextNode()) // MarkerRemoverPredicate requires a Text node. | 493 if (!node.IsTextNode()) // MarkerRemoverPredicate requires a Text node. |
494 continue; | 494 continue; |
495 MarkerLists* markers = node_markers.value; | 495 MarkerLists* markers = node_markers.value; |
496 for (DocumentMarker::MarkerType type : DocumentMarker::AllMarkers()) { | 496 for (DocumentMarker::MarkerType type : DocumentMarker::AllMarkers()) { |
497 Member<MarkerList>& list = ListForType(markers, type); | 497 MarkerList* list = ListForType(markers, type); |
498 if (!list) | 498 if (!list) |
499 continue; | 499 continue; |
500 bool removed_markers = false; | 500 bool removed_markers = DocumentMarkerListEditor::RemoveMarkersUnderWords( |
501 for (size_t j = list->size(); j > 0; --j) { | 501 list, ToText(node).data(), words); |
502 const DocumentMarker& marker = *list->at(j - 1); | |
503 | |
504 const unsigned start = marker.StartOffset(); | |
505 const unsigned length = marker.EndOffset() - marker.StartOffset(); | |
506 | |
507 const String marker_text = ToText(node).data().Substring(start, length); | |
508 if (words.Contains(marker_text)) { | |
509 list->erase(j - 1); | |
510 removed_markers = true; | |
511 } | |
512 } | |
513 if (removed_markers && type == DocumentMarker::kTextMatch) | 502 if (removed_markers && type == DocumentMarker::kTextMatch) |
514 InvalidatePaintForTickmarks(node); | 503 InvalidatePaintForTickmarks(node); |
515 } | 504 } |
516 } | 505 } |
517 } | 506 } |
518 | 507 |
519 void DocumentMarkerController::RemoveMarkersOfTypes( | 508 void DocumentMarkerController::RemoveMarkersOfTypes( |
520 DocumentMarker::MarkerTypes marker_types) { | 509 DocumentMarker::MarkerTypes marker_types) { |
521 if (!PossiblyHasMarkers(marker_types)) | 510 if (!PossiblyHasMarkers(marker_types)) |
522 return; | 511 return; |
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
738 } | 727 } |
739 | 728 |
740 } // namespace blink | 729 } // namespace blink |
741 | 730 |
742 #ifndef NDEBUG | 731 #ifndef NDEBUG |
743 void showDocumentMarkers(const blink::DocumentMarkerController* controller) { | 732 void showDocumentMarkers(const blink::DocumentMarkerController* controller) { |
744 if (controller) | 733 if (controller) |
745 controller->ShowMarkers(); | 734 controller->ShowMarkers(); |
746 } | 735 } |
747 #endif | 736 #endif |
OLD | NEW |