Fixed <rdar://problem/3781561> REGRESSION (Mail): typing in Mail became suddenly...
authorrjw <rjw@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 16 Sep 2004 00:52:49 +0000 (00:52 +0000)
committerrjw <rjw@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 16 Sep 2004 00:52:49 +0000 (00:52 +0000)
A DocumentMarker may begin before the InLineBox that includes
it.  Ensure that we correctly handle that case.  The paintMarker()
method and code that calls it could do with some cleanup to
make it clearer how all the cases are handled, i.e. marker
within box, or intersecting beginning or end of box.

        Reviewed by Darin.

        * khtml/rendering/render_text.cpp:
        (InlineTextBox::paintMarker):  Minimal change to ensure that we
handle the case of marker starting before box.

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

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

index 31cc388da1c7a7516a14a2fd940ea68b4b69e258..e1aa9cea1054572a8c5d47d1c3948550fd74baf2 100644 (file)
@@ -1,3 +1,19 @@
+2004-09-15  Richard Williamson   <rjw@apple.com>
+
+       Fixed <rdar://problem/3781561> REGRESSION (Mail): typing in Mail became suddenly really sluggish (substitute font code)
+
+       A DocumentMarker may begin before the InLineBox that includes
+       it.  Ensure that we correctly handle that case.  The paintMarker()
+       method and code that calls it could do with some cleanup to
+       make it clearer how all the cases are handled, i.e. marker
+       within box, or intersecting beginning or end of box.
+
+        Reviewed by Darin.
+
+        * khtml/rendering/render_text.cpp:
+        (InlineTextBox::paintMarker):  Minimal change to ensure that we
+       handle the case of marker starting before box.
+
 2004-09-15  Darin Adler  <darin@apple.com>
 
         Reviewed by John.
index c0972b19ab102f06d74addf0ff01ab89688b58e2..cc69fd7d78f0c8ff85bceba5d7b2c39d0a319eac 100644 (file)
@@ -377,7 +377,7 @@ void InlineTextBox::paintMarker(QPainter *pt, int _tx, int _ty, DocumentMarker m
     bool useWholeWidth = true;
     ulong paintStart = m_start;
     ulong paintEnd = end()+1;      // end points at the last char, not past it
-    if (paintStart != marker.startOffset) {
+    if (paintStart <= marker.startOffset) {
         paintStart = marker.startOffset;
         useWholeWidth = false;
         start = static_cast<RenderText*>(m_object)->width(m_start, paintStart - m_start, m_firstLine);