| Index: third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp
|
| diff --git a/third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp b/third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp
|
| index 71a48a56cc62fbfd9098153f1efa18d809a453f9..2a67f9b75382b78f2125573b94604efb789f0d1f 100644
|
| --- a/third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp
|
| +++ b/third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp
|
| @@ -802,17 +802,28 @@ void SpellChecker::ReplaceMisspelledRange(const String& text) {
|
| .ToNormalizedEphemeralRange();
|
| if (caret_range.IsNull())
|
| return;
|
| - DocumentMarkerVector markers =
|
| - GetFrame().GetDocument()->Markers().MarkersInRange(
|
| - caret_range, DocumentMarker::MisspellingMarkers());
|
| - if (markers.size() < 1 ||
|
| - markers[0]->StartOffset() >= markers[0]->EndOffset())
|
| +
|
| + Node* found_marker_anchor_node = nullptr;
|
| + const DocumentMarker* found_marker = nullptr;
|
| + for (Node& node : caret_range.Nodes()) {
|
| + const DocumentMarkerVector& markers_in_node =
|
| + GetFrame().GetDocument()->Markers().MarkersFor(
|
| + &node, DocumentMarker::MisspellingMarkers());
|
| + for (const DocumentMarker* marker : markers_in_node) {
|
| + if (marker->StartOffset() < marker->EndOffset()) {
|
| + found_marker_anchor_node = &node;
|
| + found_marker = marker;
|
| + break;
|
| + }
|
| + }
|
| + }
|
| +
|
| + if (!found_marker)
|
| return;
|
| +
|
| EphemeralRange marker_range = EphemeralRange(
|
| - Position(caret_range.StartPosition().ComputeContainerNode(),
|
| - markers[0]->StartOffset()),
|
| - Position(caret_range.EndPosition().ComputeContainerNode(),
|
| - markers[0]->EndOffset()));
|
| + Position(found_marker_anchor_node, found_marker->StartOffset()),
|
| + Position(found_marker_anchor_node, found_marker->EndOffset()));
|
| if (marker_range.IsNull())
|
| return;
|
|
|
|
|