Index: Source/core/editing/Editor.cpp |
diff --git a/Source/core/editing/Editor.cpp b/Source/core/editing/Editor.cpp |
index b487c8d243b83d1b95f90431143bcee82be08428..2dfe15c1380edf42118974096822f6b1d136930a 100644 |
--- a/Source/core/editing/Editor.cpp |
+++ b/Source/core/editing/Editor.cpp |
@@ -419,9 +419,9 @@ void Editor::replaceSelectionWithFragment(PassRefPtr<DocumentFragment> fragment, |
Node* nodeToCheck = m_frame->selection()->rootEditableElement(); |
if (!nodeToCheck) |
return; |
- |
RefPtr<Range> rangeToCheck = Range::create(m_frame->document(), firstPositionInNode(nodeToCheck), lastPositionInNode(nodeToCheck)); |
- m_spellCheckRequester->requestCheckingFor(SpellCheckRequest::create(resolveTextCheckingTypeMask(TextCheckingTypeSpelling | TextCheckingTypeGrammar), TextCheckingProcessBatch, rangeToCheck, rangeToCheck)); |
+ TextCheckingParagraph textToCheck(rangeToCheck, rangeToCheck); |
+ chunkAndMarkAllMisspellingsAndBadGrammar(resolveTextCheckingTypeMask(TextCheckingTypeSpelling | TextCheckingTypeGrammar), textToCheck, true); |
tony
2013/08/29 22:44:45
Please use "bool asynchronous = true" and pass asy
|
} |
void Editor::replaceSelectionWithText(const String& text, bool selectReplacement, bool smartReplace) |
@@ -1509,6 +1509,13 @@ void Editor::markAllMisspellingsAndBadGrammarInRanges(TextCheckingTypeMask textC |
Range* rangeToCheck = shouldMarkGrammar ? grammarRange : spellingRange; |
TextCheckingParagraph fullParagraphToCheck(rangeToCheck); |
+ |
+ bool asynchronous = m_frame && m_frame->settings() && m_frame->settings()->asynchronousSpellCheckingEnabled(); |
+ chunkAndMarkAllMisspellingsAndBadGrammar(textCheckingOptions, fullParagraphToCheck, asynchronous); |
+} |
+ |
+void Editor::chunkAndMarkAllMisspellingsAndBadGrammar(TextCheckingTypeMask textCheckingOptions, const TextCheckingParagraph& fullParagraphToCheck, bool asynchronous) |
+{ |
if (fullParagraphToCheck.isRangeEmpty() || fullParagraphToCheck.isEmpty()) |
return; |
@@ -1518,13 +1525,11 @@ void Editor::markAllMisspellingsAndBadGrammarInRanges(TextCheckingTypeMask textC |
int end = fullParagraphToCheck.checkingEnd(); |
start = std::min(start, end); |
end = std::max(start, end); |
- bool asynchronous = m_frame && m_frame->settings() && m_frame->settings()->asynchronousSpellCheckingEnabled(); |
const int kNumChunksToCheck = asynchronous ? (end - start + kChunkSize - 1) / (kChunkSize) : 1; |
int currentChunkStart = start; |
- RefPtr<Range> checkRange = asynchronous ? fullParagraphToCheck.paragraphRange() : rangeToCheck; |
- RefPtr<Range> paragraphRange = fullParagraphToCheck.paragraphRange(); |
+ RefPtr<Range> checkRange = fullParagraphToCheck.checkingRange(); |
if (kNumChunksToCheck == 1 && asynchronous) { |
- markAllMisspellingsAndBadGrammarInRanges(textCheckingOptions, checkRange.get(), paragraphRange.get(), asynchronous, 0); |
+ markAllMisspellingsAndBadGrammarInRanges(textCheckingOptions, checkRange.get(), checkRange.get(), asynchronous, 0); |
return; |
} |
@@ -1532,10 +1537,9 @@ void Editor::markAllMisspellingsAndBadGrammarInRanges(TextCheckingTypeMask textC |
checkRange = fullParagraphToCheck.subrange(currentChunkStart, kChunkSize); |
setStart(checkRange.get(), startOfSentence(checkRange->startPosition())); |
setEnd(checkRange.get(), endOfSentence(checkRange->endPosition())); |
- paragraphRange = checkRange; |
int checkingLength = 0; |
- markAllMisspellingsAndBadGrammarInRanges(textCheckingOptions, checkRange.get(), paragraphRange.get(), asynchronous, iter, &checkingLength); |
+ markAllMisspellingsAndBadGrammarInRanges(textCheckingOptions, checkRange.get(), checkRange.get(), asynchronous, iter, &checkingLength); |
currentChunkStart += checkingLength; |
} |
} |