Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * (C) 1999 Lars Knoll (knoll@kde.org) | 2 * (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 2000 Dirk Mueller (mueller@kde.org) | 3 * (C) 2000 Dirk Mueller (mueller@kde.org) |
| 4 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. | 4 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. |
| 5 * Copyright (C) 2006 Andrew Wellington (proton@wiretapped.net) | 5 * Copyright (C) 2006 Andrew Wellington (proton@wiretapped.net) |
| 6 * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com) | 6 * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com) |
| 7 * | 7 * |
| 8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
| 9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
| 10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
| (...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 434 // Work around signed/unsigned issues. This function takes unsigneds, and is often passed UINT_MAX | 434 // Work around signed/unsigned issues. This function takes unsigneds, and is often passed UINT_MAX |
| 435 // to mean "all the way to the end". InlineTextBox coordinates are unsigneds , so changing this | 435 // to mean "all the way to the end". InlineTextBox coordinates are unsigneds , so changing this |
| 436 // function to take ints causes various internal mismatches. But selectionRe ct takes ints, and | 436 // function to take ints causes various internal mismatches. But selectionRe ct takes ints, and |
| 437 // passing UINT_MAX to it causes trouble. Ideally we'd change selectionRect to take unsigneds, but | 437 // passing UINT_MAX to it causes trouble. Ideally we'd change selectionRect to take unsigneds, but |
| 438 // that would cause many ripple effects, so for now we'll just clamp our uns igned parameters to INT_MAX. | 438 // that would cause many ripple effects, so for now we'll just clamp our uns igned parameters to INT_MAX. |
| 439 ASSERT(end == UINT_MAX || end <= INT_MAX); | 439 ASSERT(end == UINT_MAX || end <= INT_MAX); |
| 440 ASSERT(start <= INT_MAX); | 440 ASSERT(start <= INT_MAX); |
| 441 start = std::min(start, static_cast<unsigned>(INT_MAX)); | 441 start = std::min(start, static_cast<unsigned>(INT_MAX)); |
| 442 end = std::min(end, static_cast<unsigned>(INT_MAX)); | 442 end = std::min(end, static_cast<unsigned>(INT_MAX)); |
| 443 | 443 |
| 444 const unsigned caretMinOffset = static_cast<unsigned>(this->caretMinOffset() ); | |
| 445 const unsigned caretMaxOffset = static_cast<unsigned>(this->caretMaxOffset() ); | |
| 446 // Skip leading and trailing unrendered whitespaces | |
|
eae
2015/08/18 16:14:45
The comment doesn't explain how this accounts for
yosin_UTC9
2015/08/19 06:08:55
Done.
| |
| 447 start = std::min(std::max(caretMinOffset, start), caretMaxOffset); | |
| 448 end = std::min(std::max(caretMinOffset, end), caretMaxOffset); | |
| 449 | |
| 444 for (InlineTextBox* box = firstTextBox(); box; box = box->nextTextBox()) { | 450 for (InlineTextBox* box = firstTextBox(); box; box = box->nextTextBox()) { |
| 445 // Note: box->end() returns the index of the last character, not the ind ex past it | 451 // Note: box->end() returns the index of the last character, not the ind ex past it |
| 446 if (start <= box->start() && box->end() < end) { | 452 if (start <= box->start() && box->end() < end) { |
| 447 LayoutRect r(box->calculateBoundaries()); | 453 LayoutRect r(box->calculateBoundaries()); |
| 448 if (useSelectionHeight) { | 454 if (useSelectionHeight) { |
| 449 LayoutRect selectionRect = box->localSelectionRect(start, end); | 455 LayoutRect selectionRect = box->localSelectionRect(start, end); |
| 450 if (box->isHorizontal()) { | 456 if (box->isHorizontal()) { |
| 451 r.setHeight(selectionRect.height()); | 457 r.setHeight(selectionRect.height()); |
| 452 r.setY(selectionRect.y()); | 458 r.setY(selectionRect.y()); |
| 453 } else { | 459 } else { |
| (...skipping 1422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1876 for (InlineTextBox* box = firstTextBox(); box; box = box->nextTextBox()) { | 1882 for (InlineTextBox* box = firstTextBox(); box; box = box->nextTextBox()) { |
| 1877 paintInvalidationContainer.invalidateDisplayItemClientOnBacking(*box); | 1883 paintInvalidationContainer.invalidateDisplayItemClientOnBacking(*box); |
| 1878 if (box->truncation() != cNoTruncation) { | 1884 if (box->truncation() != cNoTruncation) { |
| 1879 if (EllipsisBox* ellipsisBox = box->root().ellipsisBox()) | 1885 if (EllipsisBox* ellipsisBox = box->root().ellipsisBox()) |
| 1880 paintInvalidationContainer.invalidateDisplayItemClientOnBacking( *ellipsisBox); | 1886 paintInvalidationContainer.invalidateDisplayItemClientOnBacking( *ellipsisBox); |
| 1881 } | 1887 } |
| 1882 } | 1888 } |
| 1883 } | 1889 } |
| 1884 | 1890 |
| 1885 } // namespace blink | 1891 } // namespace blink |
| OLD | NEW |