Index: Source/core/page/EventHandler.cpp |
diff --git a/Source/core/page/EventHandler.cpp b/Source/core/page/EventHandler.cpp |
index 152e7d648b02736c66848734713d5a32ee8fa969..11b74d59c6d3563d33beb86d986f5dec27879644 100644 |
--- a/Source/core/page/EventHandler.cpp |
+++ b/Source/core/page/EventHandler.cpp |
@@ -418,10 +418,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); |
@@ -437,10 +438,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()) { |
@@ -482,11 +484,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); |
@@ -518,11 +521,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); |
@@ -541,7 +545,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. |
@@ -557,7 +562,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(); |
@@ -687,7 +692,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) |
@@ -742,6 +747,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()) |
@@ -756,7 +762,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)) |
@@ -829,11 +835,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); |
@@ -1101,7 +1106,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(); |
@@ -1328,9 +1333,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, ResizerForPointer)) { |
layer->setInResizeMode(true); |
@@ -3825,7 +3831,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; |
} |