diff options
author | John Reck <jreck@google.com> | 2011-10-20 15:26:23 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2011-10-20 15:26:23 -0700 |
commit | 9a26d18f4c7e98b479be700575d003f873214550 (patch) | |
tree | 82b4ea54125890b6dd28f32a86ef4d43c9d08e8a /Source/WebCore/rendering/RenderObjectChildList.cpp | |
parent | 2190c2d4386e3783d331c0bcf01774d466d08aac (diff) | |
download | external_webkit-9a26d18f4c7e98b479be700575d003f873214550.zip external_webkit-9a26d18f4c7e98b479be700575d003f873214550.tar.gz external_webkit-9a26d18f4c7e98b479be700575d003f873214550.tar.bz2 |
Cherry pick 97075
Bug: 5491444
Change-Id: If97d58a3d590e8e972bceec61e3ae16860a30088
Diffstat (limited to 'Source/WebCore/rendering/RenderObjectChildList.cpp')
-rw-r--r-- | Source/WebCore/rendering/RenderObjectChildList.cpp | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/Source/WebCore/rendering/RenderObjectChildList.cpp b/Source/WebCore/rendering/RenderObjectChildList.cpp index b6c7992..92f3b16 100644 --- a/Source/WebCore/rendering/RenderObjectChildList.cpp +++ b/Source/WebCore/rendering/RenderObjectChildList.cpp @@ -269,15 +269,10 @@ RenderObject* RenderObjectChildList::beforePseudoElementRenderer(const RenderObj // generated inline run-in in the next level of children. RenderObject* first = const_cast<RenderObject*>(owner); do { - // Skip list markers and generated run-ins first = first->firstChild(); - while (first && first->isListMarker()) { - if (first->parent() != owner && first->parent()->isAnonymousBlock()) - first = first->parent(); - first = first->nextSibling(); - } - while (first && first->isRenderInline() && first->isRunIn()) - first = first->nextSibling(); + // Skip list markers and generated run-ins. + while (first && (first->isListMarker() || (first->isRenderInline() && first->isRunIn()))) + first = first->nextInPreOrderAfterChildren(owner); } while (first && first->isAnonymous() && first->style()->styleType() == NOPSEUDO); if (!first) @@ -287,20 +282,17 @@ RenderObject* RenderObjectChildList::beforePseudoElementRenderer(const RenderObj return first; // Check for a possible generated run-in, using run-in positioning rules. - // Skip inlines and floating / positioned blocks, and place as the first child. first = owner->firstChild(); if (!first->isRenderBlock()) return 0; - while (first && first->isFloatingOrPositioned()) + + first = first->firstChild(); + // We still need to skip any list markers that could exist before the run-in. + while (first && first->isListMarker()) first = first->nextSibling(); - if (first) { - first = first->firstChild(); - // We still need to skip any list markers that could exist before the run-in. - while (first && first->isListMarker()) - first = first->nextSibling(); - if (first && first->style()->styleType() == BEFORE && first->isRenderInline() && first->isRunIn()) - return first; - } + if (first && first->style()->styleType() == BEFORE && first->isRenderInline() && first->isRunIn()) + return first; + return 0; } |