Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(979)

Unified Diff: Source/core/editing/VisibleUnits.cpp

Issue 20681004: Make first-letter style to work with editing Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: 2013-08-01T17:57:42 Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/editing/VisibleUnits.cpp
diff --git a/Source/core/editing/VisibleUnits.cpp b/Source/core/editing/VisibleUnits.cpp
index 189501332491e8a20e2715e3a5c55225afe84e64..c15d10618cc5baf6f9562d6a24fe0ee5a9182d89 100644
--- a/Source/core/editing/VisibleUnits.cpp
+++ b/Source/core/editing/VisibleUnits.cpp
@@ -484,7 +484,7 @@ static VisiblePosition previousBoundary(const VisiblePosition& c, BoundarySearch
SimplifiedBackwardsTextIterator it(searchRange.get());
unsigned next = 0;
- bool inTextSecurityMode = start.deprecatedNode() && start.deprecatedNode()->renderer() && start.deprecatedNode()->renderer()->style()->textSecurity() != TSNONE;
+ bool inTextSecurityMode = start.deprecatedNode() && start.renderer() && start.renderer()->style()->textSecurity() != TSNONE;
bool needMoreContext = false;
while (!it.atEnd()) {
// iterate to get chunks until the searchFunction returns a non-zero value.
@@ -558,7 +558,7 @@ static VisiblePosition nextBoundary(const VisiblePosition& c, BoundarySearchFunc
searchRange->setStart(start.deprecatedNode(), start.deprecatedEditingOffset(), IGNORE_EXCEPTION);
TextIterator it(searchRange.get(), TextIteratorEmitsCharactersBetweenAllVisiblePositions);
unsigned next = 0;
- bool inTextSecurityMode = start.deprecatedNode() && start.deprecatedNode()->renderer() && start.deprecatedNode()->renderer()->style()->textSecurity() != TSNONE;
+ bool inTextSecurityMode = start.deprecatedNode() && start.renderer() && start.renderer()->style()->textSecurity() != TSNONE;
bool needMoreContext = false;
while (!it.atEnd()) {
// Keep asking the iterator for chunks until the search function
@@ -718,7 +718,7 @@ static VisiblePosition startPositionForLine(const VisiblePosition& c, LineEndpoi
// There are VisiblePositions at offset 0 in blocks without
// RootInlineBoxes, like empty editable blocks and bordered blocks.
Position p = c.deepEquivalent();
- if (p.deprecatedNode()->renderer() && p.deprecatedNode()->renderer()->isRenderBlock() && !p.deprecatedEditingOffset())
+ if (p.renderer() && p.renderer()->isRenderBlock() && !p.deprecatedEditingOffset())
return c;
return VisiblePosition();
@@ -791,7 +791,7 @@ static VisiblePosition endPositionForLine(const VisiblePosition& c, LineEndpoint
// There are VisiblePositions at offset 0 in blocks without
// RootInlineBoxes, like empty editable blocks and bordered blocks.
Position p = c.deepEquivalent();
- if (p.deprecatedNode()->renderer() && p.deprecatedNode()->renderer()->isRenderBlock() && !p.deprecatedEditingOffset())
+ if (p.renderer() && p.renderer()->isRenderBlock() && !p.deprecatedEditingOffset())
return c;
return VisiblePosition();
}
@@ -1135,16 +1135,16 @@ VisiblePosition startOfParagraph(const VisiblePosition& c, EditingBoundaryCrossi
if (r->isText() && toRenderText(r)->renderedTextLength()) {
ASSERT_WITH_SECURITY_IMPLICATION(n->isTextNode());
+ RenderText* text = toRenderText(r);
type = Position::PositionIsOffsetInAnchor;
if (style->preserveNewline()) {
- RenderText* text = toRenderText(r);
int i = text->textLength();
int o = offset;
if (n == startNode && o < i)
i = max(0, o);
while (--i >= 0) {
if ((*text)[i] == '\n')
- return VisiblePosition(Position(toText(n), i + 1), DOWNSTREAM);
+ return VisiblePosition(Position(toText(n), i + text->textStartOffset() + 1), DOWNSTREAM);
}
}
node = n;
@@ -1217,18 +1217,18 @@ VisiblePosition endOfParagraph(const VisiblePosition &c, EditingBoundaryCrossing
// FIXME: We avoid returning a position where the renderer can't accept the caret.
if (r->isText() && toRenderText(r)->renderedTextLength()) {
ASSERT_WITH_SECURITY_IMPLICATION(n->isTextNode());
- int length = toRenderText(r)->textLength();
+ RenderText* text = toRenderText(r);
+ int length = text->textLength();
type = Position::PositionIsOffsetInAnchor;
if (style->preserveNewline()) {
- RenderText* text = toRenderText(r);
int o = n == startNode ? offset : 0;
for (int i = o; i < length; ++i) {
if ((*text)[i] == '\n')
- return VisiblePosition(Position(toText(n), i), DOWNSTREAM);
+ return VisiblePosition(Position(toText(n), i + text->textStartOffset()), DOWNSTREAM);
}
}
node = n;
- offset = r->caretMaxOffset();
+ offset = r->caretMaxOffset() + text->textStartOffset();
n = NodeTraversal::next(n, stayInsideBlock);
} else if (editingIgnoresContent(n) || isTableElement(n)) {
node = n;

Powered by Google App Engine
This is Rietveld 408576698