Index: WebCore/rendering/RenderBlockLineLayout.cpp |
=================================================================== |
--- WebCore/rendering/RenderBlockLineLayout.cpp (revision 69497) |
+++ WebCore/rendering/RenderBlockLineLayout.cpp (working copy) |
@@ -264,6 +264,7 @@ |
{ |
ASSERT(firstRun); |
+ bool rootHasSelectedChildren = false; |
InlineFlowBox* parentBox = 0; |
for (BidiRun* r = firstRun; r; r = r->next()) { |
// Create a box for our object. |
@@ -278,6 +279,9 @@ |
if (!box) |
continue; |
+ if (!rootHasSelectedChildren && box->renderer()->selectionState() != RenderObject::SelectionNone) |
+ rootHasSelectedChildren = true; |
+ |
// If we have no parent box yet, or if the run is not simply a sibling, |
// then we need to construct inline boxes as necessary to properly enclose the |
// run's inline box. |
@@ -305,6 +309,11 @@ |
// be the last continuation of our line list. |
ASSERT(lastLineBox() && !lastLineBox()->isConstructed()); |
+ // Set the m_selectedChildren flag on the root inline box if one of the leaf inline box |
+ // from the bidi runs walk above has a selection state. |
+ if (rootHasSelectedChildren) |
+ lastLineBox()->root()->setHasSelectedChildren(true); |
+ |
// Set bits on our inline flow boxes that indicate which sides should |
// paint borders/margins/padding. This knowledge will ultimately be used when |
// we determine the horizontal positions and widths of all the inline boxes on |