Reviewed by Darin.
authorharrison <harrison@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 21 Feb 2005 19:56:24 +0000 (19:56 +0000)
committerharrison <harrison@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 21 Feb 2005 19:56:24 +0000 (19:56 +0000)
        <rdar://problem/3943090> REGRESSION (Mail): Spelling underline incompletely erased following certain steps

        * WebCoreSupport.subproj/WebTextRenderer.m:
        (-[WebTextRenderer misspellingLineThickness]):
        (-[WebTextRenderer misspellingLinePatternWidth]):
        Replaced #defines with these methods, so others can get the same info.

        (-[WebTextRenderer drawLineForMisspelling:withWidth:]):
        Keep underline within originally specified bounds.

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

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

index a0d14b0a3b2288338a75b4d6428f78934ca6b0a2..6a0e8344945efd30d6ce32a96bfea31ae7386740 100644 (file)
@@ -1,3 +1,18 @@
+2005-02-21  David Harrison  <harrison@apple.com>
+
+        Reviewed by Darin.
+
+        <rdar://problem/3943090> REGRESSION (Mail): Spelling underline incompletely erased following certain steps
+
+        * WebCoreSupport.subproj/WebTextRenderer.m:
+        (-[WebTextRenderer misspellingLineThickness]):
+        (-[WebTextRenderer misspellingLinePatternWidth]):
+        Replaced #defines with these methods, so others can get the same info.
+        
+        (-[WebTextRenderer drawLineForMisspelling:withWidth:]):
+        Keep underline within originally specified bounds.
+        
+
 2005-02-21  Darin Adler  <darin@apple.com>
 
         Reviewed by John.
index 79fad2209503fda93eaed5c01164c76eca09d6d8..5ccc151ff7c96b3720098d012a2decdc6990f14b 100644 (file)
@@ -613,15 +613,23 @@ static BOOL alwaysUseATSU = NO;
     }
 }
 
-// Constants for pattern underline
-#define patternWidth 4
-#define patternHeight 3
+- (int)misspellingLineThickness
+{
+    return 3;
+}
+
+- (int)misspellingLinePatternWidth
+{
+    return 4;
+}
 
 - (void)drawLineForMisspelling:(NSPoint)point withWidth:(int)width
 {
     // Constants for pattern color
     static NSColor *spellingPatternColor = nil;
     static bool usingDot = false;
+    int patternHeight = [self misspellingLineThickness];
+    int patternWidth = [self misspellingLinePatternWidth];
  
     // Initialize pattern color if needed
     if (!spellingPatternColor) {
@@ -635,15 +643,12 @@ static BOOL alwaysUseATSU = NO;
         spellingPatternColor = [color retain];
     }
 
-    // Width must be divisible by 4 to make sure we always draw full misspelling dots under words.
-    // Do a small adjustment to shift the underline back to the left if the pattern was
-    // expanded to the right "too much" to accomodate the drawing of a full dot.
-    if (usingDot) {
-        int w = (width + patternWidth) - (width % patternWidth);
-        if (w - width > 2) 
-            point.x -= 1;
-        width = w;
-    }
+    // 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);
 
     // Compute the appropriate phase relative to the top level view in the window.
     NSPoint originInWindow = [[NSView focusView] convertPoint:point toView:nil];
@@ -662,9 +667,6 @@ static BOOL alwaysUseATSU = NO;
     [currentContext restoreGraphicsState];
 }
 
-#undef patternWidth
-#undef patternHeight
-
 - (int)pointToOffset:(const WebCoreTextRun *)run style:(const WebCoreTextStyle *)style position:(int)x reversed:(BOOL)reversed includePartialGlyphs:(BOOL)includePartialGlyphs
 {
     if (style->smallCaps && !isSmallCapsRenderer) {