| Index: third_party/WebKit/Source/core/layout/LayoutText.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/LayoutText.cpp b/third_party/WebKit/Source/core/layout/LayoutText.cpp
|
| index c7b873fe8e40d46f38d3c45bf8ad62b7b85ba2b0..6e007fd64554d30aee75cb3a7d4b99ba5ad2de84 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutText.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutText.cpp
|
| @@ -343,21 +343,18 @@ void LayoutText::AbsoluteRects(Vector<IntRect>& rects,
|
|
|
| static FloatRect LocalQuadForTextBox(InlineTextBox* box,
|
| unsigned start,
|
| - unsigned end,
|
| - bool use_selection_height) {
|
| + unsigned end) {
|
| unsigned real_end = std::min(box->end() + 1, end);
|
| LayoutRect r = box->LocalSelectionRect(start, real_end);
|
| if (r.Height()) {
|
| - if (!use_selection_height) {
|
| - // Change the height and y position (or width and x for vertical text)
|
| - // because selectionRect uses selection-specific values.
|
| - if (box->IsHorizontal()) {
|
| - r.SetHeight(box->Height());
|
| - r.SetY(box->Y());
|
| - } else {
|
| - r.SetWidth(box->Width());
|
| - r.SetX(box->X());
|
| - }
|
| + // Change the height and y position (or width and x for vertical text)
|
| + // because selectionRect uses selection-specific values.
|
| + if (box->IsHorizontal()) {
|
| + r.SetHeight(box->Height());
|
| + r.SetY(box->Y());
|
| + } else {
|
| + r.SetWidth(box->Width());
|
| + r.SetX(box->X());
|
| }
|
| return FloatRect(r);
|
| }
|
| @@ -366,8 +363,7 @@ static FloatRect LocalQuadForTextBox(InlineTextBox* box,
|
|
|
| void LayoutText::AbsoluteRectsForRange(Vector<IntRect>& rects,
|
| unsigned start,
|
| - unsigned end,
|
| - bool use_selection_height) const {
|
| + unsigned end) const {
|
| // Work around signed/unsigned issues. This function takes unsigneds, and is
|
| // often passed UINT_MAX to mean "all the way to the end". InlineTextBox
|
| // coordinates are unsigneds, so changing this function to take ints causes
|
| @@ -388,16 +384,6 @@ void LayoutText::AbsoluteRectsForRange(Vector<IntRect>& rects,
|
| // past it
|
| if (start <= box->Start() && box->end() < end) {
|
| FloatRect r(box->FrameRect());
|
| - if (use_selection_height) {
|
| - LayoutRect selection_rect = box->LocalSelectionRect(start, end);
|
| - if (box->IsHorizontal()) {
|
| - r.SetHeight(selection_rect.Height().ToFloat());
|
| - r.SetY(selection_rect.Y().ToFloat());
|
| - } else {
|
| - r.SetWidth(selection_rect.Width().ToFloat());
|
| - r.SetX(selection_rect.X().ToFloat());
|
| - }
|
| - }
|
| if (!has_checked_box_in_range) {
|
| has_checked_box_in_range = true;
|
| rects.clear();
|
| @@ -405,8 +391,7 @@ void LayoutText::AbsoluteRectsForRange(Vector<IntRect>& rects,
|
| rects.push_back(LocalToAbsoluteQuad(r).EnclosingBoundingBox());
|
| } else if ((box->Start() <= start && start <= box->end()) ||
|
| (box->Start() < end && end <= box->end())) {
|
| - FloatRect rect =
|
| - LocalQuadForTextBox(box, start, end, use_selection_height);
|
| + FloatRect rect = LocalQuadForTextBox(box, start, end);
|
| if (!rect.IsZero()) {
|
| if (!has_checked_box_in_range) {
|
| has_checked_box_in_range = true;
|
| @@ -417,8 +402,7 @@ void LayoutText::AbsoluteRectsForRange(Vector<IntRect>& rects,
|
| } else if (!has_checked_box_in_range) {
|
| // FIXME: This code is wrong. It's converting local to absolute twice.
|
| // http://webkit.org/b/65722
|
| - FloatRect rect =
|
| - LocalQuadForTextBox(box, start, end, use_selection_height);
|
| + FloatRect rect = LocalQuadForTextBox(box, start, end);
|
| if (!rect.IsZero())
|
| rects.push_back(LocalToAbsoluteQuad(rect).EnclosingBoundingBox());
|
| }
|
| @@ -523,7 +507,7 @@ void LayoutText::AbsoluteQuadsForRange(Vector<FloatQuad>& quads,
|
| quads.push_back(LocalToAbsoluteQuad(FloatRect(r)));
|
| } else if ((box->Start() <= start && start <= box->end()) ||
|
| (box->Start() < end && end <= box->end())) {
|
| - FloatRect rect = LocalQuadForTextBox(box, start, end, false);
|
| + FloatRect rect = LocalQuadForTextBox(box, start, end);
|
| if (!rect.IsZero()) {
|
| if (!has_checked_box_in_range) {
|
| has_checked_box_in_range = true;
|
| @@ -534,7 +518,7 @@ void LayoutText::AbsoluteQuadsForRange(Vector<FloatQuad>& quads,
|
| } else if (!has_checked_box_in_range) {
|
| // consider when the offset of range is area of leading or trailing
|
| // whitespace
|
| - FloatRect rect = LocalQuadForTextBox(box, start, end, false);
|
| + FloatRect rect = LocalQuadForTextBox(box, start, end);
|
| if (!rect.IsZero())
|
| quads.push_back(LocalToAbsoluteQuad(rect).EnclosingBoundingBox());
|
| }
|
|
|