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

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

Issue 20681004: Make first-letter style to work with editing Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: 2013-08-08T13:29:08 Created 7 years, 4 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/FrameSelection.cpp
diff --git a/Source/core/editing/FrameSelection.cpp b/Source/core/editing/FrameSelection.cpp
index b632220a4142a64a0a650c6f4d9d580a7897da3b..6e73ce293ce6990d7145dc50158e7db2ead1219d 100644
--- a/Source/core/editing/FrameSelection.cpp
+++ b/Source/core/editing/FrameSelection.cpp
@@ -1156,7 +1156,7 @@ void FrameSelection::prepareForDestruction()
view->clearSelection();
setSelection(VisibleSelection(), CloseTyping | ClearTypingStyle | DoNotUpdateAppearance);
- m_previousCaretNode.clear();
+ m_previousCaretPosition.clear();
}
void FrameSelection::setStart(const VisiblePosition &pos, EUserTriggered trigger)
@@ -1201,7 +1201,7 @@ void FrameSelection::setExtent(const Position &pos, EAffinity affinity, EUserTri
RenderObject* FrameSelection::caretRenderer() const
{
- return CaretBase::caretRenderer(m_selection.start().deprecatedNode());
+ return CaretBase::caretRenderer(m_selection.start());
}
static bool isNonOrphanedCaret(const VisibleSelection& selection)
@@ -1245,19 +1245,18 @@ bool FrameSelection::recomputeCaretRect()
return false;
IntRect oldAbsCaretBounds = m_absCaretBounds;
- m_absCaretBounds = absoluteBoundsForLocalRect(m_selection.start().deprecatedNode(), localCaretRectWithoutUpdate());
+ m_absCaretBounds = absoluteBoundsForLocalRect(m_selection.start(), localCaretRectWithoutUpdate());
m_absCaretBoundsDirty = false;
if (oldAbsCaretBounds == m_absCaretBounds)
return false;
if (RenderView* view = m_frame->document()->renderView()) {
- Node* node = m_selection.start().deprecatedNode();
- if (m_previousCaretNode)
- repaintCaretForLocalRect(m_previousCaretNode.get(), oldRect);
- m_previousCaretNode = node;
+ if (m_previousCaretPosition.isNotNull())
+ repaintCaretForLocalRect(m_previousCaretPosition, oldRect);
+ m_previousCaretPosition = m_selection.start();
if (shouldRepaintCaret(view, isContentEditable()))
- repaintCaretForLocalRect(node, newRect);
+ repaintCaretForLocalRect(m_previousCaretPosition, newRect);
}
return true;
@@ -1268,13 +1267,13 @@ void FrameSelection::invalidateCaretRect()
if (!isCaret())
return;
- CaretBase::invalidateCaretRect(m_selection.start().deprecatedNode(), recomputeCaretRect());
+ CaretBase::invalidateCaretRect(m_selection.start(), recomputeCaretRect());
}
void FrameSelection::paintCaret(GraphicsContext* context, const LayoutPoint& paintOffset, const LayoutRect& clipRect)
{
if (m_selection.isCaret() && m_caretPaint)
- CaretBase::paintCaret(m_selection.start().deprecatedNode(), context, paintOffset, clipRect);
+ CaretBase::paintCaret(m_selection.start(), context, paintOffset, clipRect);
}
void FrameSelection::debugRenderer(RenderObject *r, bool selected) const
@@ -1355,11 +1354,11 @@ bool FrameSelection::contains(const LayoutPoint& point)
HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::DisallowShadowContent);
HitTestResult result(point);
document->renderView()->hitTest(request, result);
- Node* innerNode = result.innerNode();
- if (!innerNode || !innerNode->renderer())
+ RenderObject* renderer = result.renderer();
+ if (!renderer)
return false;
- VisiblePosition visiblePos(innerNode->renderer()->positionForPoint(result.localPoint()));
+ VisiblePosition visiblePos(renderer->positionForPoint(result.localPoint()));
if (visiblePos.isNull())
return false;
@@ -1638,11 +1637,8 @@ void FrameSelection::updateAppearance()
// We can get into a state where the selection endpoints map to the same VisiblePosition when a selection is deleted
// because we don't yet notify the FrameSelection of text removal.
- if (startPos.isNotNull() && endPos.isNotNull() && selection.visibleStart() != selection.visibleEnd()) {
- RenderObject* startRenderer = startPos.deprecatedNode()->renderer();
- RenderObject* endRenderer = endPos.deprecatedNode()->renderer();
- view->setSelection(startRenderer, startPos.deprecatedEditingOffset(), endRenderer, endPos.deprecatedEditingOffset());
- }
+ if (startPos.isNotNull() && endPos.isNotNull() && selection.visibleStart() != selection.visibleEnd())
+ view->setSelection(startPos.renderer(), startPos.offsetInRenderer(), endPos.renderer(), endPos.offsetInRenderer());
}
void FrameSelection::setCaretVisibility(CaretVisibility visibility)
@@ -1861,11 +1857,11 @@ void FrameSelection::revealSelection(const ScrollAlignment& alignment, RevealExt
Position start = this->start();
ASSERT(start.deprecatedNode());
- if (start.deprecatedNode() && start.deprecatedNode()->renderer()) {
+ if (start.renderer()) {
// FIXME: This code only handles scrolling the startContainer's layer, but
// the selection rect could intersect more than just that.
// See <rdar://problem/4799899>.
- if (start.deprecatedNode()->renderer()->scrollRectToVisible(rect, alignment, alignment))
+ if (start.renderer()->scrollRectToVisible(rect, alignment, alignment))
updateAppearance();
}
}

Powered by Google App Engine
This is Rietveld 408576698