diff options
| author | Steve Block <steveblock@google.com> | 2012-05-08 02:52:00 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-05-08 02:52:00 -0700 |
| commit | af5fa119b4efee32d2fc764636fd6a3ffaf06284 (patch) | |
| tree | fcefa8a0b51b43fdd09531ba7384c9e36ac6f7dd /Source/WebCore | |
| parent | b3d68a4f5f6b7a491646e2d158c0c7aedccd9eb4 (diff) | |
| parent | 0b6461e8a4be51c556f77873d5ec18767cb26f58 (diff) | |
| download | external_webkit-af5fa119b4efee32d2fc764636fd6a3ffaf06284.zip external_webkit-af5fa119b4efee32d2fc764636fd6a3ffaf06284.tar.gz external_webkit-af5fa119b4efee32d2fc764636fd6a3ffaf06284.tar.bz2 | |
Merge changes Ie015bf4c,If5e731ad into jb-dev
* changes:
Cherry-pick WebKit change r98561 to fix a rendering crash
Cherry-pick WebKit change r96294 as a prerequisite for r98561
Diffstat (limited to 'Source/WebCore')
| -rw-r--r-- | Source/WebCore/rendering/RenderBlock.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/Source/WebCore/rendering/RenderBlock.cpp b/Source/WebCore/rendering/RenderBlock.cpp index 49dd169..86d8a98 100644 --- a/Source/WebCore/rendering/RenderBlock.cpp +++ b/Source/WebCore/rendering/RenderBlock.cpp @@ -5380,21 +5380,28 @@ void RenderBlock::updateFirstLetter() // Drill into inlines looking for our first text child. RenderObject* currChild = firstLetterBlock->firstChild(); - while (currChild && ((!currChild->isReplaced() && !currChild->isRenderButton() && !currChild->isMenuList()) || currChild->isFloatingOrPositioned()) && !currChild->isText()) { - if (currChild->isFloatingOrPositioned()) { + while (currChild) { + if (currChild->isText()) + break; + if (currChild->isListMarker()) + currChild = currChild->nextSibling(); + else if (currChild->isFloatingOrPositioned()) { if (currChild->style()->styleType() == FIRST_LETTER) { currChild = currChild->firstChild(); break; - } + } currChild = currChild->nextSibling(); - } else + } else if (currChild->isReplaced() || currChild->isRenderButton() || currChild->isMenuList()) + break; + else if (currChild->style()->hasPseudoStyle(FIRST_LETTER) && currChild->canHaveChildren()) { + // We found a lower-level node with first-letter, which supersedes the higher-level style + firstLetterBlock = currChild; + currChild = currChild->firstChild(); + } + else currChild = currChild->firstChild(); } - // Get list markers out of the way. - while (currChild && currChild->isListMarker()) - currChild = currChild->nextSibling(); - if (!currChild) return; |
