Reviewed by Maciej.
authorharrison <harrison@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 20 Mar 2005 04:58:41 +0000 (04:58 +0000)
committerharrison <harrison@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 20 Mar 2005 04:58:41 +0000 (04:58 +0000)
        <rdar://problem/4059479> Misspelling underline does underline the whole word, could go farther to the right

        * WebCoreSupport.subproj/WebTextRenderer.m:
        (-[WebTextRenderer misspellingLinePatternGapWidth]):
        (-[WebTextRenderer drawLineForMisspelling:withWidth:]):
        Consider that the last pixel in the underline dot pattern is transparent.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@8938 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKit/ChangeLog
WebKit/WebCoreSupport.subproj/WebTextRenderer.m

index 476e96ae1491f0940e6b8a9ee1b112bd32d0b489..70c2501f9fa0db81c442e30090d251884851823e 100644 (file)
@@ -1,3 +1,14 @@
+2005-03-19  David Harrison  <harrison@apple.com>
+
+        Reviewed by Maciej.
+        
+        <rdar://problem/4059479> Misspelling underline does underline the whole word, could go farther to the right
+
+        * WebCoreSupport.subproj/WebTextRenderer.m:
+        (-[WebTextRenderer misspellingLinePatternGapWidth]):
+        (-[WebTextRenderer drawLineForMisspelling:withWidth:]):
+        Consider that the last pixel in the underline dot pattern is transparent.
+
 2005-03-19  Darin Adler  <darin@apple.com>
 
         Reviewed by Maciej (a while back).
index 2563791746c823c62afa991d499dcb127d25fd2c..eb1c9f0bccb971bd62c06ed92ea70afcff567ec3 100644 (file)
@@ -639,6 +639,12 @@ static BOOL alwaysUseATSU = NO;
     return 4;
 }
 
+// the number of transparent pixels after the dot
+- (int)misspellingLinePatternGapWidth
+{
+    return 1;
+}
+
 - (void)drawLineForMisspelling:(NSPoint)point withWidth:(int)width
 {
     // Constants for pattern color
@@ -659,13 +665,18 @@ static BOOL alwaysUseATSU = NO;
         spellingPatternColor = [color retain];
     }
 
-    // Make sure to draw only complete dots
+    // Make sure to draw only complete dots.
     // NOTE: Code here used to shift the underline to the left and increase the width
     // to make sure everything gets underlined, but that results in drawing out of
-    // bounds, e.g. when at the edge of a view.
-    if (usingDot)
-        width -= (width % patternWidth);
-
+    // bounds (e.g. when at the edge of a view) and could make it appear that the
+    // space between adjacent misspelled words was underlined.
+    if (usingDot) {
+        // allow slightly more considering that the pattern ends with a transparent pixel
+        int widthMod = width % patternWidth;
+        if (patternWidth - widthMod > [self misspellingLinePatternGapWidth])
+            width -= widthMod;
+    }
+    
     // Compute the appropriate phase relative to the top level view in the window.
     NSPoint originInWindow = [[NSView focusView] convertPoint:point toView:nil];
     // WebCore may translate the focus, and thus need an extra phase correction