Spelling error annotation should encompass hyphen in misspelled word that wraps acros...
authordbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 7 Oct 2017 00:18:04 +0000 (00:18 +0000)
committerdbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 7 Oct 2017 00:18:04 +0000 (00:18 +0000)
commit0946272a4fcb2ee8f9ed507f7d4f81d4fad9bcc6
tree28254d1a910eb8d4ba5f37e2fd30830844ecd80c
parentffe89a16e105fa9fd719c539cd9a3af17402526d
Spelling error annotation should encompass hyphen in misspelled word that wraps across multiple lines
https://bugs.webkit.org/show_bug.cgi?id=177980
<rdar://problem/34847454>

Reviewed by Simon Fraser.

Source/WebCore:

On macOS the spelling and grammar annotations for a word or word phrase encompass
hyphenations added because the word or word phrase wraps across more than one line.
The effect tends to be more aesthetically pleasing and consistent with how these
annotations would be pointed out by a person in conversation: by identify the word
or phrase that has a spelling or grammar issue regardless of whether that word or
phrase is broken into halves due to line wrapping. The same argument applies to
other annotations on macOS, including text matches. Therefore, we should always
include any hyphens encompassed by a marker that were added due to line wrapping
when painting the marker.

Test: editing/spelling/spelling-marker-includes-hyphen.html

* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::paintDocumentMarker): Compute the text run including any
added hyphens. If a hyphen was added then the inline text box represents that text
up to the hyphen. Adjust the end position of the marker to be the length of the text
run if its greater than or equal to the length of the text box.

LayoutTests:

Add a test to ensure that a spelling error decoration encompasses the hyphen for a misspelled
word that is hyphenated because it is broken across more than one line.

* editing/spelling/spelling-marker-includes-hyphen-expected.html: Added.
* editing/spelling/spelling-marker-includes-hyphen.html: Added.
* platform/ios/TestExpectations: Mark the test as WontFix as spelling and
grammar markers are not support on iOS.
* platform/mac-wk2/TestExpectations: Mark the test as a failure due to <https://bugs.webkit.org/show_bug.cgi?id=105616>.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@223013 268f45cc-cd09-0410-ab3c-d52691b4dbfc
LayoutTests/ChangeLog
LayoutTests/editing/spelling/spelling-marker-includes-hyphen-expected.html [new file with mode: 0644]
LayoutTests/editing/spelling/spelling-marker-includes-hyphen.html [new file with mode: 0644]
LayoutTests/platform/ios/TestExpectations
LayoutTests/platform/mac-wk2/TestExpectations
Source/WebCore/ChangeLog
Source/WebCore/rendering/InlineTextBox.cpp