| Index: Source/core/rendering/RenderNamedFlowThread.cpp
 | 
| diff --git a/Source/core/rendering/RenderNamedFlowThread.cpp b/Source/core/rendering/RenderNamedFlowThread.cpp
 | 
| index 97774fb63f1fe6afed91b3413df0b8252a5eb954..c52fceb253afcfd6dad95ab460a24ba31898b292 100644
 | 
| --- a/Source/core/rendering/RenderNamedFlowThread.cpp
 | 
| +++ b/Source/core/rendering/RenderNamedFlowThread.cpp
 | 
| @@ -90,6 +90,18 @@ void RenderNamedFlowThread::clearContentNodes()
 | 
|      m_contentNodes.clear();
 | 
|  }
 | 
|  
 | 
| +void RenderNamedFlowThread::updateWritingMode()
 | 
| +{
 | 
| +    if (RenderRegion* firstRegion = m_regionList.first()) {
 | 
| +        if (style()->writingMode() != firstRegion->style()->writingMode()) {
 | 
| +            // The first region defines the principal writing mode for the entire flow.
 | 
| +            RefPtr<RenderStyle> newStyle = RenderStyle::clone(style());
 | 
| +            newStyle->setWritingMode(firstRegion->style()->writingMode());
 | 
| +            setStyle(newStyle);
 | 
| +        }
 | 
| +    }
 | 
| +}
 | 
| +
 | 
|  RenderObject* RenderNamedFlowThread::nextRendererForNode(Node* node) const
 | 
|  {
 | 
|      FlowThreadChildList::const_iterator it = m_flowThreadChildList.begin();
 | 
| @@ -244,6 +256,9 @@ void RenderNamedFlowThread::addRegionToNamedFlowThread(RenderRegion* renderRegio
 | 
|  
 | 
|      renderRegion->setIsValid(true);
 | 
|      addRegionToList(m_regionList, renderRegion);
 | 
| +
 | 
| +    if (m_regionList.first() == renderRegion)
 | 
| +        updateWritingMode();
 | 
|  }
 | 
|  
 | 
|  void RenderNamedFlowThread::addRegionToThread(RenderRegion* renderRegion)
 | 
| @@ -283,6 +298,7 @@ void RenderNamedFlowThread::removeRegionFromThread(RenderRegion* renderRegion)
 | 
|      }
 | 
|  
 | 
|      ASSERT(m_regionList.contains(renderRegion));
 | 
| +    bool wasFirst = m_regionList.first() == renderRegion;
 | 
|      m_regionList.remove(renderRegion);
 | 
|  
 | 
|      if (canBeDestroyed())
 | 
| @@ -291,10 +307,18 @@ void RenderNamedFlowThread::removeRegionFromThread(RenderRegion* renderRegion)
 | 
|      // After removing all the regions in the flow the following layout needs to dispatch the regionLayoutUpdate event
 | 
|      if (m_regionList.isEmpty())
 | 
|          setDispatchRegionLayoutUpdateEvent(true);
 | 
| +    else if (wasFirst)
 | 
| +        updateWritingMode();
 | 
|  
 | 
|      invalidateRegions();
 | 
|  }
 | 
|  
 | 
| +void RenderNamedFlowThread::regionChangedWritingMode(RenderRegion* region)
 | 
| +{
 | 
| +    if (m_regionList.first() == region)
 | 
| +        updateWritingMode();
 | 
| +}
 | 
| +
 | 
|  void RenderNamedFlowThread::computeOversetStateForRegions(LayoutUnit oldClientAfterEdge)
 | 
|  {
 | 
|      LayoutUnit height = oldClientAfterEdge;
 | 
| 
 |