Skip to content
  • darin's avatar
    Reviewed by Oliver Hunt. · 29df4b01
    darin authored
            - fix <rdar://problem/5193416> REGRESSION: Selection on large pages extremely slow
    
            * dom/Document.cpp: (WebCore::Document::removeMarkers): Added an early exit for the common
            case where there are no markers. Changed code to iterate over all the nodes in the range
            instead of using TextIterator, which is more efficient.
            
            * page/Frame.cpp: (WebCore::Frame::respondToChangedSelection): Added checks for editable,
            so we don't bother doing work related to spell checking and grammar checking when changing
            the selection in non-editable text. Also rearranged the code so we only compute the old
            word boundaries and sentence boundaries when actually needed, and don't do the sentence
            range checks unless grammar checking is enabled.
    
            * platform/TextBreakIteratorICU.cpp:
            (WebCore::setUpIterator): Don't take a locale parameter. Always pass in currentTextBreakLocaleID.
            (WebCore::characterBreakIterator): Removed local parameter.
            (WebCore::wordBreakIterator): Ditto.
            (WebCore::lineBreakIterator): Ditto.
            (WebCore::sentenceBreakIterator): Ditto.
    
            * platform/mac/TextBreakIteratorInternalICUMac.mm:
            (WebCore::getTextBreakLocale): Broke out the code to actually get the locale.
            (WebCore::currentTextBreakLocaleID): This function now handles only the caching and calls
            getTextBreakLocale to actually figure it out.
    
            * editing/visible_units.cpp: Added lots of FIXME comments, but no code change.
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@21611 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    29df4b01