Reviewed by Hyatt.
authorantti <antti@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 19 Feb 2007 09:20:35 +0000 (09:20 +0000)
committerantti <antti@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 19 Feb 2007 09:20:35 +0000 (09:20 +0000)
        - really fix http://bugs.webkit.org/show_bug.cgi?id=11974
        REGRESSION: Caret drawn over input when smaller than font size on initial focus
        <rdar://problem/4960258>

        Avoid double painting caret when it is on a block element.

        Layout test for this already went in previous try (it only fails in pixel mode) in r19626.

        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::paintCaret):

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

WebCore/ChangeLog
WebCore/rendering/RenderBlock.cpp

index 42e40972448f54868ee549766cb3da18732728aa..65dd097918493869343e9fe7093586863018fa76 100644 (file)
@@ -1,3 +1,18 @@
+2007-02-18  Antti Koivisto  <antti@apple.com>
+
+        Reviewed by Hyatt.
+
+        - really fix http://bugs.webkit.org/show_bug.cgi?id=11974
+        REGRESSION: Caret drawn over input when smaller than font size on initial focus
+        <rdar://problem/4960258>
+        
+        Avoid double painting caret when it is on a block element.
+        
+        Layout test for this already went in previous try (it only fails in pixel mode) in r19626.
+
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::paintCaret):
+
 2007-02-19  Lars Knoll <lars@trolltech.com>
 
         Added a one line patch from Olliej to create the
index 21ba7a73346c0534a0622388bda4bf1ae0995e44..0500e9a6d5b24396468f008faaa225fff775389c 100644 (file)
@@ -1413,7 +1413,7 @@ void RenderBlock::paintCaret(PaintInfo& paintInfo, CaretType type)
     SelectionController* selectionController = type == CursorCaret ? document()->frame()->selectionController() : document()->frame()->dragCaretController();
     Node* caretNode = selectionController->start().node();
     RenderObject* renderer = caretNode ? caretNode->renderer() : 0;
-    if (renderer && (renderer == this || renderer->containingBlock() == this) && caretNode && caretNode->isContentEditable()) {
+    if (renderer && (renderer == this || (renderer->containingBlock() == this && !renderer->isBlockFlow())) && caretNode->isContentEditable()) {
         if (type == CursorCaret)
             document()->frame()->paintCaret(paintInfo.context, paintInfo.rect);
         else