| 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
|
|
|