2007-07-13 Mitz Pettel <mitz@webkit.org>
Reviewed by Dave Hyatt.
- fix http://bugs.webkit.org/show_bug.cgi?id=14395
When a <p> is inside <li> two <BR>s are rendered
Test: fast/lists/marker-before-empty-inline.html
* rendering/RenderBlock.h:
* rendering/RenderListItem.cpp:
(WebCore::getParentOfFirstLineBox): Changed to skip empty inline flows that
do not actually generate any line boxes. Limited the nested lists quirk to
the case where the list is a child of the list item, to match Firefox.
* rendering/bidi.cpp:
(WebCore::requiresLineBox): Added. Factored out of skipWhitespace.
(WebCore::RenderBlock::generatesLineBoxesForInlineChild): Added. Checkes
whether the child or any of its siblings following it will generate a line
box in the flow.
(WebCore::RenderBlock::skipWhitespace):
2007-07-13 Mitz Pettel <mitz@webkit.org>
Reviewed by Dave Hyatt.
- test and updated results for http://bugs.webkit.org/show_bug.cgi?id=14395
When a <p> is inside <li> two <BR>s are rendered
* editing/pasteboard/4861080-expected.checksum:
* editing/pasteboard/4861080-expected.png:
* editing/pasteboard/4861080-expected.txt:
* fast/lists/marker-before-empty-inline-expected.checksum: Added.
* fast/lists/marker-before-empty-inline-expected.png: Added.
* fast/lists/marker-before-empty-inline-expected.txt: Added.
* fast/lists/marker-before-empty-inline.html: Added.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@24255 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/rendering/RenderListItem.cpp b/WebCore/rendering/RenderListItem.cpp
index 61cf61c..ba77300 100644
--- a/WebCore/rendering/RenderListItem.cpp
+++ b/WebCore/rendering/RenderListItem.cpp
@@ -135,7 +135,7 @@
return lastChild() == m_marker;
}
-static RenderObject* getParentOfFirstLineBox(RenderObject* curr, RenderObject* marker)
+static RenderObject* getParentOfFirstLineBox(RenderBlock* curr, RenderObject* marker)
{
RenderObject* firstChild = curr->firstChild();
if (!firstChild)
@@ -145,7 +145,7 @@
if (currChild == marker)
continue;
- if (currChild->isInline())
+ if (currChild->isInline() && (!currChild->isInlineFlow() || curr->generatesLineBoxesForInlineChild(currChild)))
return curr;
if (currChild->isFloating() || currChild->isPositioned())
@@ -154,11 +154,11 @@
if (currChild->isTable() || !currChild->isRenderBlock())
break;
- if (currChild->style()->htmlHacks() && currChild->element() &&
+ if (curr->isListItem() && currChild->style()->htmlHacks() && currChild->element() &&
(currChild->element()->hasTagName(ulTag)|| currChild->element()->hasTagName(olTag)))
break;
- RenderObject* lineBox = getParentOfFirstLineBox(currChild, marker);
+ RenderObject* lineBox = getParentOfFirstLineBox(static_cast<RenderBlock*>(currChild), marker);
if (lineBox)
return lineBox;
}