| Index: third_party/WebKit/Source/core/layout/LayoutBlock.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/LayoutBlock.cpp b/third_party/WebKit/Source/core/layout/LayoutBlock.cpp
|
| index 6774606bbe87f2d44541a216072c22e94fcafb04..e3c2b1f099ec69a4ce3d31ddb3b0f085bb997413 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutBlock.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutBlock.cpp
|
| @@ -265,6 +265,11 @@ static bool borderOrPaddingLogicalWidthChanged(const ComputedStyle& oldStyle, co
|
|
|
| void LayoutBlock::styleDidChange(StyleDifference diff, const ComputedStyle* oldStyle)
|
| {
|
| + // Horizontal writing mode definition is updated in LayoutBoxModelObject::updateFromStyle,
|
| + // (as part of the LayoutBoxModelObject::styleDidChange call below). So, we can safely cache the horizontal
|
| + // writing mode value before style change here.
|
| + bool oldHorizontalWritingMode = isHorizontalWritingMode();
|
| +
|
| LayoutBox::styleDidChange(diff, oldStyle);
|
|
|
| if (isFloatingOrOutOfFlowPositioned() && oldStyle && !oldStyle->isFloating() && !oldStyle->hasOutOfFlowPosition() && parent() && parent()->isLayoutBlockFlow()) {
|
| @@ -286,6 +291,21 @@ void LayoutBlock::styleDidChange(StyleDifference diff, const ComputedStyle* oldS
|
| if (LayoutBlock* cb = containingBlock())
|
| cb->removePositionedObjects(this, NewContainingBlock);
|
| }
|
| +
|
| + // Changing the writingMode() may change isOrthogonalWritingModeRoot()
|
| + // of children. Make sure all children are marked/unmarked as orthogonal
|
| + // writing-mode roots.
|
| + bool newHorizontalWritingMode = isHorizontalWritingMode();
|
| + if (oldHorizontalWritingMode != newHorizontalWritingMode) {
|
| + for (LayoutObject* child = firstChild(); child; child = child->nextSibling()) {
|
| + if (!child->isBox())
|
| + continue;
|
| + if (newHorizontalWritingMode != child->isHorizontalWritingMode())
|
| + toLayoutBox(child)->markOrthogonalWritingModeRoot();
|
| + else
|
| + toLayoutBox(child)->unmarkOrthogonalWritingModeRoot();
|
| + }
|
| + }
|
| }
|
|
|
| if (TextAutosizer* textAutosizer = document().textAutosizer())
|
|
|