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

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-09-20T18:27:32 Created 7 years, 3 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 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;
}

Powered by Google App Engine
This is Rietveld 408576698