Reviewed by Chris
authorkocienda <kocienda@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 26 Aug 2004 22:43:47 +0000 (22:43 +0000)
committerkocienda <kocienda@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 26 Aug 2004 22:43:47 +0000 (22:43 +0000)
        Fix for this bug:

        <rdar://problem/3777804> Deleting all content in a document can result in giant tall-as-window insertion point

        * khtml/rendering/render_box.cpp:
        (RenderBox::caretPos): Always use the font height for calculating the caret height in
        non-replaced elements (like blocks), rather than the height of the box.

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

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

index bcf83dddeecdcf675d5707a501104b3a27835956..b451f40f32dd758b6587151df5f2a2b9a5344b22 100644 (file)
@@ -1,3 +1,15 @@
+2004-08-26  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Chris
+        
+        Fix for this bug:
+        
+        <rdar://problem/3777804> Deleting all content in a document can result in giant tall-as-window insertion point
+
+        * khtml/rendering/render_box.cpp:
+        (RenderBox::caretPos): Always use the font height for calculating the caret height in 
+        non-replaced elements (like blocks), rather than the height of the box.
+
 2004-08-26  Ken Kocienda  <kocienda@apple.com>
 
         Reviewed by me
index d0b656432d28328b16cf4e7ecee74c27ceb67e09..c807a63022ca95be400f1e516ea6c44a77c2e65f 100644 (file)
@@ -1491,9 +1491,14 @@ void RenderBox::caretPos(int offset, bool override, int &_x, int &_y, int &width
         width = override && offset == 0 ? m_width : 1;
         // If height of box is smaller than font height, use the latter one,
         // otherwise the caret might become invisible.
+        // 
+        // Also, if the box is not a replaced element, always use the font height.
+        // This prevents the "big caret" bug described in:
+        // <rdar://problem/3777804> Deleting all content in a document can result in giant tall-as-window insertion point
+        //
         // FIXME: ignoring :first-line, missing good reason to take care of
         int fontHeight = style()->fontMetrics().height();
-        if (fontHeight > height)
+        if (fontHeight > height || !isReplaced())
             height = fontHeight;
         
         int absx, absy;