Reviewed by Hyatt.
authoradele <adele@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 27 Nov 2006 21:30:37 +0000 (21:30 +0000)
committeradele <adele@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 27 Nov 2006 21:30:37 +0000 (21:30 +0000)
        - Fix for http://bugs.webkit.org/show_bug.cgi?id=8062
          Caret color in new text field should take background color and foreground color into consideration

        * editing/SelectionController.cpp: (WebCore::SelectionController::paintCaret):
          Use the foreground color of the rootEditableElement to determine the caret color.  This will work well for text controls in web pages (since the root is always the actual form control)
          as well as in editable WebViews, like in Mail, which will just pick up the color from the body element.

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

WebCore/ChangeLog
WebCore/editing/SelectionController.cpp

index c58081ea03f7915cdfa366dbe22500846db79880..178646ae525a3329824c4825f8e7116cbc740aa4 100644 (file)
@@ -1,3 +1,14 @@
+2006-11-27  Adele Peterson  <adele@apple.com>
+
+        Reviewed by Hyatt.
+
+        - Fix for http://bugs.webkit.org/show_bug.cgi?id=8062
+          Caret color in new text field should take background color and foreground color into consideration
+
+        * editing/SelectionController.cpp: (WebCore::SelectionController::paintCaret):
+          Use the foreground color of the rootEditableElement to determine the caret color.  This will work well for text controls in web pages (since the root is always the actual form control)
+          as well as in editable WebViews, like in Mail, which will just pick up the color from the body element.
+
 2006-11-26  Simon Hausmann  <hausmann@kde.org>
 
         Reviewed by Maciej.
index 0feba91f6ace093fce91ad116c98df9a87c7eba4..2396ca5ef7c1dca220b99b9c54fea8615241660a 100644 (file)
@@ -866,8 +866,14 @@ void SelectionController::paintCaret(GraphicsContext *p, const IntRect &rect)
         layout();
         
     IntRect caret = intersection(caretRect(), rect);
-    if (!caret.isEmpty())
-        p->fillRect(caret, Color::black);
+    if (!caret.isEmpty()) {
+        Color caretColor = Color::black;
+        Element* element = rootEditableElement();
+        if (element && element->renderer())
+            caretColor = element->renderer()->style()->color();
+
+        p->fillRect(caret, caretColor);
+    }
 }
 
 void SelectionController::debugRenderer(RenderObject *r, bool selected) const