Reviewed by Darin
authorsullivan <sullivan@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 1 Dec 2006 21:25:09 +0000 (21:25 +0000)
committersullivan <sullivan@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 1 Dec 2006 21:25:09 +0000 (21:25 +0000)
commit4e53fb89e45cdf080e328ff53033d6442628bbe0
treef8d41d62d3ddbaa846eb9e05bd2ab94e42247662
parent352bf76daf8171b7a1eece4f5cb65be1ad9eecac
    Reviewed by Darin

        With these changes, grammar checking works correctly for the one-by-one case.
        It still doesn't work correctly for the check-as-you-type case; I need to make these
        same kinds of changes in markMisspellings, and refactor to share more code between
        the two cases, but I wanted to get this working code in before modifying it further.

        The major change here is that advanceToNextMisspelling used to look at small chunks of
        text at a time, checking each one for both misspellings and questionable grammar. But
        grammar checking needs at least paragraph-sized chunks of text to have enough context
        to work correctly, so the old mechanism was causing many spurious complaints of bad
        grammar (e.g., almost every word seemed to be at the start of a sentence so the checker
        would complain about missing capitalization). So now the spell checker runs in the
        specified range first. Then the grammar checker runs on the same range (stopping at the
        next misspelling, if any), but expanded to paragraph-aligned boundaries.

        * bridge/mac/FrameMac.mm:
        (WebCore::findFirstMisspellingInRange):
        new function, extracted from advanceToNextMisspelling, and ignores grammar
        (WebCore::paragraphAlignedRangeForRange):
        new function, used by findNextBadGrammarInRange
        (WebCore::findFirstBadGrammarInRange):
        new function, extracted from advanceToNextMisspelling, and rewritten to use paragraph-aligned
        chunks, and ignores spelling
        (WebCore::subrange):
        new helper function, used by advanceToNextMisspelling
        (WebCore::FrameMac::advanceToNextMisspelling):
        now calls out to both findFirstMisspellingInRange and findFirstBadGrammarInRange separately
        instead of trying to interweave the spelling and grammar logic

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@17966 268f45cc-cd09-0410-ab3c-d52691b4dbfc
WebCore/ChangeLog
WebCore/bridge/mac/FrameMac.mm