Reviewed by Hyatt
authorkocienda <kocienda@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 22 Oct 2004 20:07:05 +0000 (20:07 +0000)
committerkocienda <kocienda@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 22 Oct 2004 20:07:05 +0000 (20:07 +0000)
        Fix for this bugs:

        <rdar://problem/3848343> REGRESSION (Mail, 166-168u): Typed text after space at end of line before block quote does not appear
        <rdar://problem/3848224> REGRESSION (Mail): space typed at end of line vanishes after typing next character

        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::findNextLineBreak): When the khtmlLineBreak is in AFTER_WHITE_SPACE mode, as
        it is when we are editing, add in the space of the current character when calculating the width
        of committed plus uncommitted characters. If this value exceeds the width of the line, move up
        the line break object and call skipWhitespace to move past the end of the whitespace.

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

WebCore/ChangeLog-2005-08-23
WebCore/khtml/rendering/bidi.cpp

index 68aebbbc82f3c58a4bf2594febd738ba3844fd0a..b42a5b825a125e95f4012fcb354ff48da1c1a8e1 100644 (file)
@@ -1,3 +1,18 @@
+2004-10-22  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Hyatt
+        
+        Fix for this bugs:
+        
+        <rdar://problem/3848343> REGRESSION (Mail, 166-168u): Typed text after space at end of line before block quote does not appear
+        <rdar://problem/3848224> REGRESSION (Mail): space typed at end of line vanishes after typing next character
+    
+        * khtml/rendering/bidi.cpp:
+        (khtml::RenderBlock::findNextLineBreak): When the khtmlLineBreak is in AFTER_WHITE_SPACE mode, as
+        it is when we are editing, add in the space of the current character when calculating the width
+        of committed plus uncommitted characters. If this value exceeds the width of the line, move up
+        the line break object and call skipWhitespace to move past the end of the whitespace.
+
 === Safari-168 ===
 
 2004-10-22  Ken Kocienda  <kocienda@apple.com>
index 2babdfc05d5fd3bf2188cb37478651a33d34c866..c0d7f0a717328de246f9ca11c49d3c2a2c909816 100644 (file)
@@ -2059,9 +2059,13 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi
                     }
         
                     if (o->style()->whiteSpace() == NORMAL) {
-                        if (w + tmpW > width) {
-                            if (o->style()->khtmlLineBreak() == AFTER_WHITE_SPACE)
+                        int charWidth = o->style()->khtmlLineBreak() == AFTER_WHITE_SPACE ? t->width(pos, 1, f) : 0;
+                        if (w + tmpW + charWidth > width) {
+                            if (o->style()->khtmlLineBreak() == AFTER_WHITE_SPACE) {
+                                lBreak.obj = o;
+                                lBreak.pos = pos;
                                 skipWhitespace(lBreak, bidi);
+                            }
                             goto end; // Didn't fit. Jump to the end.
                         }
                         else if (pos > 1 && str[pos-1].unicode() == SOFT_HYPHEN)