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

Unified Diff: Source/core/page/EventHandler.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/page/EventHandler.cpp
diff --git a/Source/core/page/EventHandler.cpp b/Source/core/page/EventHandler.cpp
index 54c1f1c8963a4286bd0f0815620b50883092a431..38607f0a5832a63f92a5c124b2a41740e8fb0f1b 100644
--- a/Source/core/page/EventHandler.cpp
+++ b/Source/core/page/EventHandler.cpp
@@ -420,10 +420,11 @@ bool EventHandler::updateSelectionForMouseDownDispatchingSelectStart(Node* targe
void EventHandler::selectClosestWordFromHitTestResult(const HitTestResult& result, AppendTrailingWhitespace appendTrailingWhitespace)
{
Node* innerNode = result.targetNode();
+ RenderObject* renderer = result.renderer();
VisibleSelection newSelection;
- if (innerNode && innerNode->renderer()) {
- VisiblePosition pos(innerNode->renderer()->positionForPoint(result.localPoint()));
+ if (innerNode && renderer) {
+ VisiblePosition pos(renderer->positionForPoint(result.localPoint()));
if (pos.isNotNull()) {
newSelection = VisibleSelection(pos);
newSelection.expandUsingGranularity(WordGranularity);
@@ -439,10 +440,11 @@ void EventHandler::selectClosestWordFromHitTestResult(const HitTestResult& resul
void EventHandler::selectClosestMisspellingFromHitTestResult(const HitTestResult& result, AppendTrailingWhitespace appendTrailingWhitespace)
{
Node* innerNode = result.targetNode();
+ RenderObject* renderer = result.renderer();
VisibleSelection newSelection;
- if (innerNode && innerNode->renderer()) {
- VisiblePosition pos(innerNode->renderer()->positionForPoint(result.localPoint()));
+ if (innerNode && renderer) {
+ VisiblePosition pos(renderer->positionForPoint(result.localPoint()));
Position start = pos.deepEquivalent();
Position end = pos.deepEquivalent();
if (pos.isNotNull()) {
@@ -484,11 +486,12 @@ void EventHandler::selectClosestWordOrLinkFromMouseEvent(const MouseEventWithHit
return selectClosestWordFromMouseEvent(result);
Node* innerNode = result.targetNode();
+ RenderObject* renderer = result.hitTestResult().renderer();
- if (innerNode && innerNode->renderer() && m_mouseDownMayStartSelect) {
+ if (innerNode && renderer && m_mouseDownMayStartSelect) {
VisibleSelection newSelection;
Element* URLElement = result.hitTestResult().URLElement();
- VisiblePosition pos(innerNode->renderer()->positionForPoint(result.localPoint()));
+ VisiblePosition pos(renderer->positionForPoint(result.localPoint()));
if (pos.isNotNull() && pos.deepEquivalent().deprecatedNode()->isDescendantOf(URLElement))
newSelection = VisibleSelection::selectionFromContentsOfNode(URLElement);
@@ -520,11 +523,12 @@ bool EventHandler::handleMousePressEventTripleClick(const MouseEventWithHitTestR
return false;
Node* innerNode = event.targetNode();
- if (!(innerNode && innerNode->renderer() && m_mouseDownMayStartSelect))
+ RenderObject* renderer = event.hitTestResult().renderer();
+ if (!(innerNode && renderer && m_mouseDownMayStartSelect))
return false;
VisibleSelection newSelection;
- VisiblePosition pos(innerNode->renderer()->positionForPoint(event.localPoint()));
+ VisiblePosition pos(renderer->positionForPoint(event.localPoint()));
if (pos.isNotNull()) {
newSelection = VisibleSelection(pos);
newSelection.expandUsingGranularity(ParagraphGranularity);
@@ -543,7 +547,8 @@ bool EventHandler::handleMousePressEventSingleClick(const MouseEventWithHitTestR
{
m_frame->document()->updateLayoutIgnorePendingStylesheets();
Node* innerNode = event.targetNode();
- if (!(innerNode && innerNode->renderer() && m_mouseDownMayStartSelect))
+ RenderObject* renderer = event.hitTestResult().renderer();
+ if (!(innerNode && renderer && m_mouseDownMayStartSelect))
return false;
// Extend the selection if the Shift key is down, unless the click is in a link.
@@ -559,7 +564,7 @@ bool EventHandler::handleMousePressEventSingleClick(const MouseEventWithHitTestR
}
}
- VisiblePosition visiblePos(innerNode->renderer()->positionForPoint(event.localPoint()));
+ VisiblePosition visiblePos(renderer->positionForPoint(event.localPoint()));
if (visiblePos.isNull())
visiblePos = VisiblePosition(firstPositionInOrBeforeNode(innerNode), DOWNSTREAM);
Position pos = visiblePos.deepEquivalent();
@@ -689,7 +694,7 @@ bool EventHandler::handleMouseDraggedEvent(const MouseEventWithHitTestResults& e
if (event.event().button() != LeftButton || !targetNode)
return false;
- RenderObject* renderer = targetNode->renderer();
+ RenderObject* renderer = event.hitTestResult().renderer();
if (!renderer) {
Node* parent = EventPathWalker::parent(targetNode);
if (!parent)
@@ -744,6 +749,7 @@ void EventHandler::updateSelectionForMouseDrag(const HitTestResult& hitTestResul
if (!target)
return;
+ RenderObject* targetRenderer = hitTestResult.renderer();
VisiblePosition targetPosition = m_frame->selection()->selection().visiblePositionRespectingEditingBoundary(hitTestResult.localPoint(), target);
// Don't modify the selection if we're not on a node.
if (targetPosition.isNull())
@@ -758,7 +764,7 @@ void EventHandler::updateSelectionForMouseDrag(const HitTestResult& hitTestResul
if (Node* selectionBaseNode = newSelection.base().deprecatedNode())
if (RenderObject* selectionBaseRenderer = selectionBaseNode->renderer())
if (selectionBaseRenderer->isSVGText())
- if (target->renderer()->containingBlock() != selectionBaseRenderer->containingBlock())
+ if (targetRenderer->containingBlock() != selectionBaseRenderer->containingBlock())
return;
if (m_selectionInitiationState == HaveNotStartedSelection && !dispatchSelectStart(target))
@@ -777,11 +783,11 @@ void EventHandler::updateSelectionForMouseDrag(const HitTestResult& hitTestResul
newSelection.setExtent(positionAfterNode(rootUserSelectAllForMousePressNode).downstream(CanCrossEditingBoundary));
} else {
// Reset base for user select all when base is inside user-select-all area and extent < base.
- if (rootUserSelectAllForMousePressNode && comparePositions(target->renderer()->positionForPoint(hitTestResult.localPoint()), m_mousePressNode->renderer()->positionForPoint(m_dragStartPos)) < 0)
+ if (rootUserSelectAllForMousePressNode && comparePositions(targetRenderer->positionForPoint(hitTestResult.localPoint()), m_mousePressNode->renderer()->positionForPoint(m_dragStartPos)) < 0)
newSelection.setBase(positionAfterNode(rootUserSelectAllForMousePressNode).downstream(CanCrossEditingBoundary));
Node* rootUserSelectAllForTarget = Position::rootUserSelectAllForNode(target);
- if (rootUserSelectAllForTarget && m_mousePressNode->renderer() && comparePositions(target->renderer()->positionForPoint(hitTestResult.localPoint()), m_mousePressNode->renderer()->positionForPoint(m_dragStartPos)) < 0)
+ if (rootUserSelectAllForTarget && m_mousePressNode->renderer() && comparePositions(targetRenderer->positionForPoint(hitTestResult.localPoint()), m_mousePressNode->renderer()->positionForPoint(m_dragStartPos)) < 0)
newSelection.setExtent(positionBeforeNode(rootUserSelectAllForTarget).upstream(CanCrossEditingBoundary));
else if (rootUserSelectAllForTarget && m_mousePressNode->renderer())
newSelection.setExtent(positionAfterNode(rootUserSelectAllForTarget).downstream(CanCrossEditingBoundary));
@@ -844,11 +850,10 @@ bool EventHandler::handleMouseReleaseEvent(const MouseEventWithHitTestResults& e
&& event.event().button() != RightButton) {
VisibleSelection newSelection;
Node* node = event.targetNode();
+ RenderObject* renderer = event.hitTestResult().renderer();
bool caretBrowsing = m_frame->settings() && m_frame->settings()->caretBrowsingEnabled();
- if (node && (caretBrowsing || node->rendererIsEditable()) && node->renderer()) {
- VisiblePosition pos = VisiblePosition(node->renderer()->positionForPoint(event.localPoint()));
- newSelection = VisibleSelection(pos);
- }
+ if (node && (caretBrowsing || node->rendererIsEditable()) && renderer)
+ newSelection = VisibleSelection(VisiblePosition(renderer->positionForPoint(event.localPoint())));
setSelectionIfNeeded(m_frame->selection(), newSelection);
@@ -1116,7 +1121,7 @@ OptionalCursor EventHandler::selectCursor(const MouseEventWithHitTestResults& ev
#endif
Node* node = event.targetNode();
- RenderObject* renderer = node ? node->renderer() : 0;
+ RenderObject* renderer = event.hitTestResult().renderer();
RenderStyle* style = renderer ? renderer->style() : 0;
bool horizontalText = !style || style->isHorizontalWritingMode();
const Cursor& iBeam = horizontalText ? iBeamCursor() : verticalTextCursor();
@@ -1343,9 +1348,10 @@ bool EventHandler::handleMousePressEvent(const PlatformMouseEvent& mouseEvent)
m_clickCount = mouseEvent.clickCount();
m_clickNode = mev.targetNode();
+ RenderObject* clickRenderer = mev.hitTestResult().renderer();
if (FrameView* view = m_frame->view()) {
- RenderLayer* layer = m_clickNode->renderer() ? m_clickNode->renderer()->enclosingLayer() : 0;
+ RenderLayer* layer = clickRenderer ? clickRenderer->enclosingLayer() : 0;
IntPoint p = view->windowToContents(mouseEvent.position());
if (layer && layer->isPointInResizeControl(p, RenderLayer::ResizerForPointer)) {
layer->setInResizeMode(true);
@@ -3817,7 +3823,7 @@ bool EventHandler::passWheelEventToWidget(const PlatformWheelEvent& wheelEvent,
bool EventHandler::passWidgetMouseDownEventToWidget(const MouseEventWithHitTestResults& event)
{
// Figure out which view to send the event to.
- if (!event.targetNode() || !event.targetNode()->renderer() || !event.targetNode()->renderer()->isWidget())
+ if (!event.targetNode() || !event.hitTestResult().renderer() || !event.hitTestResult().renderer()->isWidget())
return false;
return false;
}

Powered by Google App Engine
This is Rietveld 408576698