summaryrefslogtreecommitdiffstats
path: root/Source/WebCore
diff options
context:
space:
mode:
authorSteve Block <steveblock@google.com>2012-05-08 02:52:00 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-05-08 02:52:00 -0700
commitaf5fa119b4efee32d2fc764636fd6a3ffaf06284 (patch)
treefcefa8a0b51b43fdd09531ba7384c9e36ac6f7dd /Source/WebCore
parentb3d68a4f5f6b7a491646e2d158c0c7aedccd9eb4 (diff)
parent0b6461e8a4be51c556f77873d5ec18767cb26f58 (diff)
downloadexternal_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.cpp23
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;