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

Side by Side Diff: Source/core/page/EventHandler.cpp

Issue 476303002: Remove obsolete HitTestResult.targetNode (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Merge with trunk Created 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | Source/core/page/EventWithHitTestResults.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv ed. 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv ed.
3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) 3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org)
4 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) 4 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies)
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 return ScrollByPixel; 187 return ScrollByPixel;
188 } 188 }
189 } 189 }
190 190
191 // Refetch the event target node if it is removed or currently is the shadow nod e inside an <input> element. 191 // Refetch the event target node if it is removed or currently is the shadow nod e inside an <input> element.
192 // If a mouse event handler changes the input element type to one that has a wid get associated, 192 // If a mouse event handler changes the input element type to one that has a wid get associated,
193 // we'd like to EventHandler::handleMousePressEvent to pass the event to the wid get and thus the 193 // we'd like to EventHandler::handleMousePressEvent to pass the event to the wid get and thus the
194 // event target node can't still be the shadow node. 194 // event target node can't still be the shadow node.
195 static inline bool shouldRefetchEventTarget(const MouseEventWithHitTestResults& mev) 195 static inline bool shouldRefetchEventTarget(const MouseEventWithHitTestResults& mev)
196 { 196 {
197 Node* targetNode = mev.targetNode(); 197 Node* targetNode = mev.innerNode();
198 if (!targetNode || !targetNode->parentNode()) 198 if (!targetNode || !targetNode->parentNode())
199 return true; 199 return true;
200 return targetNode->isShadowRoot() && isHTMLInputElement(*toShadowRoot(target Node)->host()); 200 return targetNode->isShadowRoot() && isHTMLInputElement(*toShadowRoot(target Node)->host());
201 } 201 }
202 202
203 EventHandler::EventHandler(LocalFrame* frame) 203 EventHandler::EventHandler(LocalFrame* frame)
204 : m_frame(frame) 204 : m_frame(frame)
205 , m_mousePressed(false) 205 , m_mousePressed(false)
206 , m_capturesDragging(false) 206 , m_capturesDragging(false)
207 , m_mouseDownMayStartSelect(false) 207 , m_mouseDownMayStartSelect(false)
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 m_selectionInitiationState = PlacedCaret; 360 m_selectionInitiationState = PlacedCaret;
361 } 361 }
362 362
363 m_frame->selection().setNonDirectionalSelectionIfNeeded(selection, granulari ty); 363 m_frame->selection().setNonDirectionalSelectionIfNeeded(selection, granulari ty);
364 364
365 return true; 365 return true;
366 } 366 }
367 367
368 void EventHandler::selectClosestWordFromHitTestResult(const HitTestResult& resul t, AppendTrailingWhitespace appendTrailingWhitespace) 368 void EventHandler::selectClosestWordFromHitTestResult(const HitTestResult& resul t, AppendTrailingWhitespace appendTrailingWhitespace)
369 { 369 {
370 Node* innerNode = result.targetNode(); 370 Node* innerNode = result.innerNode();
371 VisibleSelection newSelection; 371 VisibleSelection newSelection;
372 372
373 if (innerNode && innerNode->renderer()) { 373 if (innerNode && innerNode->renderer()) {
374 VisiblePosition pos(innerNode->renderer()->positionForPoint(result.local Point())); 374 VisiblePosition pos(innerNode->renderer()->positionForPoint(result.local Point()));
375 if (pos.isNotNull()) { 375 if (pos.isNotNull()) {
376 newSelection = VisibleSelection(pos); 376 newSelection = VisibleSelection(pos);
377 newSelection.expandUsingGranularity(WordGranularity); 377 newSelection.expandUsingGranularity(WordGranularity);
378 } 378 }
379 379
380 if (appendTrailingWhitespace == ShouldAppendTrailingWhitespace && newSel ection.isRange()) 380 if (appendTrailingWhitespace == ShouldAppendTrailingWhitespace && newSel ection.isRange())
381 newSelection.appendTrailingWhitespace(); 381 newSelection.appendTrailingWhitespace();
382 382
383 updateSelectionForMouseDownDispatchingSelectStart(innerNode, expandSelec tionToRespectUserSelectAll(innerNode, newSelection), WordGranularity); 383 updateSelectionForMouseDownDispatchingSelectStart(innerNode, expandSelec tionToRespectUserSelectAll(innerNode, newSelection), WordGranularity);
384 } 384 }
385 } 385 }
386 386
387 void EventHandler::selectClosestMisspellingFromHitTestResult(const HitTestResult & result, AppendTrailingWhitespace appendTrailingWhitespace) 387 void EventHandler::selectClosestMisspellingFromHitTestResult(const HitTestResult & result, AppendTrailingWhitespace appendTrailingWhitespace)
388 { 388 {
389 Node* innerNode = result.targetNode(); 389 Node* innerNode = result.innerNode();
390 VisibleSelection newSelection; 390 VisibleSelection newSelection;
391 391
392 if (innerNode && innerNode->renderer()) { 392 if (innerNode && innerNode->renderer()) {
393 VisiblePosition pos(innerNode->renderer()->positionForPoint(result.local Point())); 393 VisiblePosition pos(innerNode->renderer()->positionForPoint(result.local Point()));
394 Position start = pos.deepEquivalent(); 394 Position start = pos.deepEquivalent();
395 Position end = pos.deepEquivalent(); 395 Position end = pos.deepEquivalent();
396 if (pos.isNotNull()) { 396 if (pos.isNotNull()) {
397 DocumentMarkerVector markers = innerNode->document().markers().marke rsInRange(makeRange(pos, pos).get(), DocumentMarker::MisspellingMarkers()); 397 DocumentMarkerVector markers = innerNode->document().markers().marke rsInRange(makeRange(pos, pos).get(), DocumentMarker::MisspellingMarkers());
398 if (markers.size() == 1) { 398 if (markers.size() == 1) {
399 start.moveToOffset(markers[0]->startOffset()); 399 start.moveToOffset(markers[0]->startOffset());
(...skipping 23 matching lines...) Expand all
423 selectClosestMisspellingFromHitTestResult(result.hitTestResult(), 423 selectClosestMisspellingFromHitTestResult(result.hitTestResult(),
424 (result.event().clickCount() == 2 && m_frame->editor().isSelectTrail ingWhitespaceEnabled()) ? ShouldAppendTrailingWhitespace : DontAppendTrailingWhi tespace); 424 (result.event().clickCount() == 2 && m_frame->editor().isSelectTrail ingWhitespaceEnabled()) ? ShouldAppendTrailingWhitespace : DontAppendTrailingWhi tespace);
425 } 425 }
426 } 426 }
427 427
428 void EventHandler::selectClosestWordOrLinkFromMouseEvent(const MouseEventWithHit TestResults& result) 428 void EventHandler::selectClosestWordOrLinkFromMouseEvent(const MouseEventWithHit TestResults& result)
429 { 429 {
430 if (!result.hitTestResult().isLiveLink()) 430 if (!result.hitTestResult().isLiveLink())
431 return selectClosestWordFromMouseEvent(result); 431 return selectClosestWordFromMouseEvent(result);
432 432
433 Node* innerNode = result.targetNode(); 433 Node* innerNode = result.innerNode();
434 434
435 if (innerNode && innerNode->renderer() && m_mouseDownMayStartSelect) { 435 if (innerNode && innerNode->renderer() && m_mouseDownMayStartSelect) {
436 VisibleSelection newSelection; 436 VisibleSelection newSelection;
437 Element* URLElement = result.hitTestResult().URLElement(); 437 Element* URLElement = result.hitTestResult().URLElement();
438 VisiblePosition pos(innerNode->renderer()->positionForPoint(result.local Point())); 438 VisiblePosition pos(innerNode->renderer()->positionForPoint(result.local Point()));
439 if (pos.isNotNull() && pos.deepEquivalent().deprecatedNode()->isDescenda ntOf(URLElement)) 439 if (pos.isNotNull() && pos.deepEquivalent().deprecatedNode()->isDescenda ntOf(URLElement))
440 newSelection = VisibleSelection::selectionFromContentsOfNode(URLElem ent); 440 newSelection = VisibleSelection::selectionFromContentsOfNode(URLElem ent);
441 441
442 updateSelectionForMouseDownDispatchingSelectStart(innerNode, expandSelec tionToRespectUserSelectAll(innerNode, newSelection), WordGranularity); 442 updateSelectionForMouseDownDispatchingSelectStart(innerNode, expandSelec tionToRespectUserSelectAll(innerNode, newSelection), WordGranularity);
443 } 443 }
(...skipping 19 matching lines...) Expand all
463 return true; 463 return true;
464 } 464 }
465 465
466 bool EventHandler::handleMousePressEventTripleClick(const MouseEventWithHitTestR esults& event) 466 bool EventHandler::handleMousePressEventTripleClick(const MouseEventWithHitTestR esults& event)
467 { 467 {
468 TRACE_EVENT0("blink", "EventHandler::handleMousePressEventTripleClick"); 468 TRACE_EVENT0("blink", "EventHandler::handleMousePressEventTripleClick");
469 469
470 if (event.event().button() != LeftButton) 470 if (event.event().button() != LeftButton)
471 return false; 471 return false;
472 472
473 Node* innerNode = event.targetNode(); 473 Node* innerNode = event.innerNode();
474 if (!(innerNode && innerNode->renderer() && m_mouseDownMayStartSelect)) 474 if (!(innerNode && innerNode->renderer() && m_mouseDownMayStartSelect))
475 return false; 475 return false;
476 476
477 VisibleSelection newSelection; 477 VisibleSelection newSelection;
478 VisiblePosition pos(innerNode->renderer()->positionForPoint(event.localPoint ())); 478 VisiblePosition pos(innerNode->renderer()->positionForPoint(event.localPoint ()));
479 if (pos.isNotNull()) { 479 if (pos.isNotNull()) {
480 newSelection = VisibleSelection(pos); 480 newSelection = VisibleSelection(pos);
481 newSelection.expandUsingGranularity(ParagraphGranularity); 481 newSelection.expandUsingGranularity(ParagraphGranularity);
482 } 482 }
483 483
484 return updateSelectionForMouseDownDispatchingSelectStart(innerNode, expandSe lectionToRespectUserSelectAll(innerNode, newSelection), ParagraphGranularity); 484 return updateSelectionForMouseDownDispatchingSelectStart(innerNode, expandSe lectionToRespectUserSelectAll(innerNode, newSelection), ParagraphGranularity);
485 } 485 }
486 486
487 static int textDistance(const Position& start, const Position& end) 487 static int textDistance(const Position& start, const Position& end)
488 { 488 {
489 RefPtrWillBeRawPtr<Range> range = Range::create(*start.document(), start, en d); 489 RefPtrWillBeRawPtr<Range> range = Range::create(*start.document(), start, en d);
490 return TextIterator::rangeLength(range.get(), true); 490 return TextIterator::rangeLength(range.get(), true);
491 } 491 }
492 492
493 bool EventHandler::handleMousePressEventSingleClick(const MouseEventWithHitTestR esults& event) 493 bool EventHandler::handleMousePressEventSingleClick(const MouseEventWithHitTestR esults& event)
494 { 494 {
495 TRACE_EVENT0("blink", "EventHandler::handleMousePressEventSingleClick"); 495 TRACE_EVENT0("blink", "EventHandler::handleMousePressEventSingleClick");
496 496
497 m_frame->document()->updateLayoutIgnorePendingStylesheets(); 497 m_frame->document()->updateLayoutIgnorePendingStylesheets();
498 Node* innerNode = event.targetNode(); 498 Node* innerNode = event.innerNode();
499 if (!(innerNode && innerNode->renderer() && m_mouseDownMayStartSelect)) 499 if (!(innerNode && innerNode->renderer() && m_mouseDownMayStartSelect))
500 return false; 500 return false;
501 501
502 // Extend the selection if the Shift key is down, unless the click is in a l ink. 502 // Extend the selection if the Shift key is down, unless the click is in a l ink.
503 bool extendSelection = event.event().shiftKey() && !event.isOverLink(); 503 bool extendSelection = event.event().shiftKey() && !event.isOverLink();
504 504
505 // Don't restart the selection when the mouse is pressed on an 505 // Don't restart the selection when the mouse is pressed on an
506 // existing selection so we can allow for text dragging. 506 // existing selection so we can allow for text dragging.
507 if (FrameView* view = m_frame->view()) { 507 if (FrameView* view = m_frame->view()) {
508 LayoutPoint vPoint = view->windowToContents(event.event().position()); 508 LayoutPoint vPoint = view->windowToContents(event.event().position());
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 582
583 if (ScrollView* scrollView = m_frame->view()) { 583 if (ScrollView* scrollView = m_frame->view()) {
584 if (scrollView->isPointInScrollbarCorner(event.event().position())) 584 if (scrollView->isPointInScrollbarCorner(event.event().position()))
585 return false; 585 return false;
586 } 586 }
587 587
588 bool singleClick = event.event().clickCount() <= 1; 588 bool singleClick = event.event().clickCount() <= 1;
589 589
590 // If we got the event back, that must mean it wasn't prevented, 590 // If we got the event back, that must mean it wasn't prevented,
591 // so it's allowed to start a drag or selection if it wasn't in a scrollbar. 591 // so it's allowed to start a drag or selection if it wasn't in a scrollbar.
592 m_mouseDownMayStartSelect = canMouseDownStartSelect(event.targetNode()) && ! event.scrollbar(); 592 m_mouseDownMayStartSelect = canMouseDownStartSelect(event.innerNode()) && !e vent.scrollbar();
593 593
594 m_mouseDownMayStartDrag = singleClick; 594 m_mouseDownMayStartDrag = singleClick;
595 595
596 m_mouseDownWasSingleClickInSelection = false; 596 m_mouseDownWasSingleClickInSelection = false;
597 597
598 m_mouseDown = event.event(); 598 m_mouseDown = event.event();
599 599
600 if (event.isOverWidget() && passWidgetMouseDownEventToWidget(event)) 600 if (event.isOverWidget() && passWidgetMouseDownEventToWidget(event))
601 return true; 601 return true;
602 602
603 if (m_frame->document()->isSVGDocument() && m_frame->document()->accessSVGEx tensions().zoomAndPanEnabled()) { 603 if (m_frame->document()->isSVGDocument() && m_frame->document()->accessSVGEx tensions().zoomAndPanEnabled()) {
604 if (event.event().shiftKey() && singleClick) { 604 if (event.event().shiftKey() && singleClick) {
605 m_svgPan = true; 605 m_svgPan = true;
606 m_frame->document()->accessSVGExtensions().startPan(m_frame->view()- >windowToContents(event.event().position())); 606 m_frame->document()->accessSVGExtensions().startPan(m_frame->view()- >windowToContents(event.event().position()));
607 return true; 607 return true;
608 } 608 }
609 } 609 }
610 610
611 // We don't do this at the start of mouse down handling, 611 // We don't do this at the start of mouse down handling,
612 // because we don't want to do it until we know we didn't hit a widget. 612 // because we don't want to do it until we know we didn't hit a widget.
613 if (singleClick) 613 if (singleClick)
614 focusDocumentView(); 614 focusDocumentView();
615 615
616 Node* innerNode = event.targetNode(); 616 Node* innerNode = event.innerNode();
617 617
618 m_mousePressNode = innerNode; 618 m_mousePressNode = innerNode;
619 m_dragStartPos = event.event().position(); 619 m_dragStartPos = event.event().position();
620 620
621 bool swallowEvent = false; 621 bool swallowEvent = false;
622 m_mousePressed = true; 622 m_mousePressed = true;
623 m_selectionInitiationState = HaveNotStartedSelection; 623 m_selectionInitiationState = HaveNotStartedSelection;
624 624
625 if (event.event().clickCount() == 2) 625 if (event.event().clickCount() == 2)
626 swallowEvent = handleMousePressEventDoubleClick(event); 626 swallowEvent = handleMousePressEventDoubleClick(event);
(...skipping 11 matching lines...) Expand all
638 bool EventHandler::handleMouseDraggedEvent(const MouseEventWithHitTestResults& e vent) 638 bool EventHandler::handleMouseDraggedEvent(const MouseEventWithHitTestResults& e vent)
639 { 639 {
640 TRACE_EVENT0("blink", "EventHandler::handleMouseDraggedEvent"); 640 TRACE_EVENT0("blink", "EventHandler::handleMouseDraggedEvent");
641 641
642 if (!m_mousePressed) 642 if (!m_mousePressed)
643 return false; 643 return false;
644 644
645 if (handleDrag(event, ShouldCheckDragHysteresis)) 645 if (handleDrag(event, ShouldCheckDragHysteresis))
646 return true; 646 return true;
647 647
648 Node* targetNode = event.targetNode(); 648 Node* targetNode = event.innerNode();
649 if (event.event().button() != LeftButton || !targetNode) 649 if (event.event().button() != LeftButton || !targetNode)
650 return false; 650 return false;
651 651
652 RenderObject* renderer = targetNode->renderer(); 652 RenderObject* renderer = targetNode->renderer();
653 if (!renderer) { 653 if (!renderer) {
654 Node* parent = NodeRenderingTraversal::parent(targetNode); 654 Node* parent = NodeRenderingTraversal::parent(targetNode);
655 if (!parent) 655 if (!parent)
656 return false; 656 return false;
657 657
658 renderer = parent->renderer(); 658 renderer = parent->renderer();
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 HitTestResult result(view->windowToContents(m_lastKnownMousePosition)); 693 HitTestResult result(view->windowToContents(m_lastKnownMousePosition));
694 renderer->hitTest(request, result); 694 renderer->hitTest(request, result);
695 updateSelectionForMouseDrag(result); 695 updateSelectionForMouseDrag(result);
696 } 696 }
697 697
698 void EventHandler::updateSelectionForMouseDrag(const HitTestResult& hitTestResul t) 698 void EventHandler::updateSelectionForMouseDrag(const HitTestResult& hitTestResul t)
699 { 699 {
700 if (!m_mouseDownMayStartSelect) 700 if (!m_mouseDownMayStartSelect)
701 return; 701 return;
702 702
703 Node* target = hitTestResult.targetNode(); 703 Node* target = hitTestResult.innerNode();
704 if (!target) 704 if (!target)
705 return; 705 return;
706 706
707 VisiblePosition targetPosition = m_frame->selection().selection().visiblePos itionRespectingEditingBoundary(hitTestResult.localPoint(), target); 707 VisiblePosition targetPosition = m_frame->selection().selection().visiblePos itionRespectingEditingBoundary(hitTestResult.localPoint(), target);
708 // Don't modify the selection if we're not on a node. 708 // Don't modify the selection if we're not on a node.
709 if (targetPosition.isNull()) 709 if (targetPosition.isNull())
710 return; 710 return;
711 711
712 // Restart the selection if this is the first mouse move. This work is usual ly 712 // Restart the selection if this is the first mouse move. This work is usual ly
713 // done in handleMousePressEvent, but not if the mouse press was on an exist ing selection. 713 // done in handleMousePressEvent, but not if the mouse press was on an exist ing selection.
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
778 778
779 // Clear the selection if the mouse didn't move after the last mouse 779 // Clear the selection if the mouse didn't move after the last mouse
780 // press and it's not a context menu click. We do this so when clicking 780 // press and it's not a context menu click. We do this so when clicking
781 // on the selection, the selection goes away. However, if we are 781 // on the selection, the selection goes away. However, if we are
782 // editing, place the caret. 782 // editing, place the caret.
783 if (m_mouseDownWasSingleClickInSelection && m_selectionInitiationState != Ex tendedSelection 783 if (m_mouseDownWasSingleClickInSelection && m_selectionInitiationState != Ex tendedSelection
784 && m_dragStartPos == event.event().position() 784 && m_dragStartPos == event.event().position()
785 && m_frame->selection().isRange() 785 && m_frame->selection().isRange()
786 && event.event().button() != RightButton) { 786 && event.event().button() != RightButton) {
787 VisibleSelection newSelection; 787 VisibleSelection newSelection;
788 Node* node = event.targetNode(); 788 Node* node = event.innerNode();
789 bool caretBrowsing = m_frame->settings() && m_frame->settings()->caretBr owsingEnabled(); 789 bool caretBrowsing = m_frame->settings() && m_frame->settings()->caretBr owsingEnabled();
790 if (node && node->renderer() && (caretBrowsing || node->hasEditableStyle ())) { 790 if (node && node->renderer() && (caretBrowsing || node->hasEditableStyle ())) {
791 VisiblePosition pos = VisiblePosition(node->renderer()->positionForP oint(event.localPoint())); 791 VisiblePosition pos = VisiblePosition(node->renderer()->positionForP oint(event.localPoint()));
792 newSelection = VisibleSelection(pos); 792 newSelection = VisibleSelection(pos);
793 } 793 }
794 794
795 setSelectionIfNeeded(m_frame->selection(), newSelection); 795 setSelectionIfNeeded(m_frame->selection(), newSelection);
796 796
797 handled = true; 797 handled = true;
798 } 798 }
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
964 if (!widget || !widget->isFrameView()) 964 if (!widget || !widget->isFrameView())
965 return 0; 965 return 0;
966 966
967 return &toFrameView(widget)->frame(); 967 return &toFrameView(widget)->frame();
968 } 968 }
969 969
970 static LocalFrame* subframeForHitTestResult(const MouseEventWithHitTestResults& hitTestResult) 970 static LocalFrame* subframeForHitTestResult(const MouseEventWithHitTestResults& hitTestResult)
971 { 971 {
972 if (!hitTestResult.isOverWidget()) 972 if (!hitTestResult.isOverWidget())
973 return 0; 973 return 0;
974 return subframeForTargetNode(hitTestResult.targetNode()); 974 return subframeForTargetNode(hitTestResult.innerNode());
975 } 975 }
976 976
977 static bool isSubmitImage(Node* node) 977 static bool isSubmitImage(Node* node)
978 { 978 {
979 return isHTMLInputElement(node) && toHTMLInputElement(node)->type() == Input TypeNames::image; 979 return isHTMLInputElement(node) && toHTMLInputElement(node)->type() == Input TypeNames::image;
980 } 980 }
981 981
982 bool EventHandler::useHandCursor(Node* node, bool isOverLink) 982 bool EventHandler::useHandCursor(Node* node, bool isOverLink)
983 { 983 {
984 if (!node) 984 if (!node)
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
1228 1228
1229 // Mouse events simulated from touch should not hit-test again. 1229 // Mouse events simulated from touch should not hit-test again.
1230 ASSERT(!mouseEvent.fromTouch()); 1230 ASSERT(!mouseEvent.fromTouch());
1231 1231
1232 HitTestRequest request(HitTestRequest::Active); 1232 HitTestRequest request(HitTestRequest::Active);
1233 // Save the document point we generate in case the window coordinate is inva lidated by what happens 1233 // Save the document point we generate in case the window coordinate is inva lidated by what happens
1234 // when we dispatch the event. 1234 // when we dispatch the event.
1235 LayoutPoint documentPoint = documentPointForWindowPoint(m_frame, mouseEvent. position()); 1235 LayoutPoint documentPoint = documentPointForWindowPoint(m_frame, mouseEvent. position());
1236 MouseEventWithHitTestResults mev = m_frame->document()->prepareMouseEvent(re quest, documentPoint, mouseEvent); 1236 MouseEventWithHitTestResults mev = m_frame->document()->prepareMouseEvent(re quest, documentPoint, mouseEvent);
1237 1237
1238 if (!mev.targetNode()) { 1238 if (!mev.innerNode()) {
1239 invalidateClick(); 1239 invalidateClick();
1240 return false; 1240 return false;
1241 } 1241 }
1242 1242
1243 m_mousePressNode = mev.targetNode(); 1243 m_mousePressNode = mev.innerNode();
1244 1244
1245 RefPtr<LocalFrame> subframe = subframeForHitTestResult(mev); 1245 RefPtr<LocalFrame> subframe = subframeForHitTestResult(mev);
1246 if (subframe && passMousePressEventToSubframe(mev, subframe.get())) { 1246 if (subframe && passMousePressEventToSubframe(mev, subframe.get())) {
1247 // Start capturing future events for this frame. We only do this if we didn't clear 1247 // Start capturing future events for this frame. We only do this if we didn't clear
1248 // the m_mousePressed flag, which may happen if an AppKit widget entered a modal event loop. 1248 // the m_mousePressed flag, which may happen if an AppKit widget entered a modal event loop.
1249 m_capturesDragging = subframe->eventHandler().capturesDragging(); 1249 m_capturesDragging = subframe->eventHandler().capturesDragging();
1250 if (m_mousePressed && m_capturesDragging) { 1250 if (m_mousePressed && m_capturesDragging) {
1251 m_capturingMouseEventsNode = mev.targetNode(); 1251 m_capturingMouseEventsNode = mev.innerNode();
1252 m_eventHandlerWillResetCapturingMouseEventsNode = true; 1252 m_eventHandlerWillResetCapturingMouseEventsNode = true;
1253 } 1253 }
1254 invalidateClick(); 1254 invalidateClick();
1255 return true; 1255 return true;
1256 } 1256 }
1257 1257
1258 #if OS(WIN) 1258 #if OS(WIN)
1259 // We store whether pan scrolling is in progress before calling stopAutoscro ll() 1259 // We store whether pan scrolling is in progress before calling stopAutoscro ll()
1260 // because it will set m_autoscrollType to NoAutoscroll on return. 1260 // because it will set m_autoscrollType to NoAutoscroll on return.
1261 bool isPanScrollInProgress = panScrollInProgress(); 1261 bool isPanScrollInProgress = panScrollInProgress();
1262 stopAutoscroll(); 1262 stopAutoscroll();
1263 if (isPanScrollInProgress) { 1263 if (isPanScrollInProgress) {
1264 // We invalidate the click when exiting pan scrolling so that we don't i nadvertently navigate 1264 // We invalidate the click when exiting pan scrolling so that we don't i nadvertently navigate
1265 // away from the current page (e.g. the click was on a hyperlink). See < rdar://problem/6095023>. 1265 // away from the current page (e.g. the click was on a hyperlink). See < rdar://problem/6095023>.
1266 invalidateClick(); 1266 invalidateClick();
1267 return true; 1267 return true;
1268 } 1268 }
1269 #endif 1269 #endif
1270 1270
1271 m_clickCount = mouseEvent.clickCount(); 1271 m_clickCount = mouseEvent.clickCount();
1272 m_clickNode = mev.targetNode()->isTextNode() ? NodeRenderingTraversal::pare nt(mev.targetNode()) : mev.targetNode(); 1272 m_clickNode = mev.innerNode()->isTextNode() ? NodeRenderingTraversal::paren t(mev.innerNode()) : mev.innerNode();
1273 1273
1274 if (FrameView* view = m_frame->view()) { 1274 if (FrameView* view = m_frame->view()) {
1275 RenderLayer* layer = mev.targetNode()->renderer() ? mev.targetNode()->re nderer()->enclosingLayer() : 0; 1275 RenderLayer* layer = mev.innerNode()->renderer() ? mev.innerNode()->rend erer()->enclosingLayer() : 0;
1276 IntPoint p = view->windowToContents(mouseEvent.position()); 1276 IntPoint p = view->windowToContents(mouseEvent.position());
1277 if (layer && layer->scrollableArea() && layer->scrollableArea()->isPoint InResizeControl(p, ResizerForPointer)) { 1277 if (layer && layer->scrollableArea() && layer->scrollableArea()->isPoint InResizeControl(p, ResizerForPointer)) {
1278 m_resizeScrollableArea = layer->scrollableArea(); 1278 m_resizeScrollableArea = layer->scrollableArea();
1279 m_resizeScrollableArea->setInResizeMode(true); 1279 m_resizeScrollableArea->setInResizeMode(true);
1280 m_offsetFromResizeCorner = m_resizeScrollableArea->offsetFromResizeC orner(p); 1280 m_offsetFromResizeCorner = m_resizeScrollableArea->offsetFromResizeC orner(p);
1281 invalidateClick(); 1281 invalidateClick();
1282 return true; 1282 return true;
1283 } 1283 }
1284 } 1284 }
1285 1285
1286 m_frame->selection().setCaretBlinkingSuspended(true); 1286 m_frame->selection().setCaretBlinkingSuspended(true);
1287 1287
1288 bool swallowEvent = !dispatchMouseEvent(EventTypeNames::mousedown, mev.targe tNode(), m_clickCount, mouseEvent, true); 1288 bool swallowEvent = !dispatchMouseEvent(EventTypeNames::mousedown, mev.inner Node(), m_clickCount, mouseEvent, true);
1289 swallowEvent = swallowEvent || handleMouseFocus(mouseEvent); 1289 swallowEvent = swallowEvent || handleMouseFocus(mouseEvent);
1290 m_capturesDragging = !swallowEvent || mev.scrollbar(); 1290 m_capturesDragging = !swallowEvent || mev.scrollbar();
1291 1291
1292 // If the hit testing originally determined the event was in a scrollbar, re fetch the MouseEventWithHitTestResults 1292 // If the hit testing originally determined the event was in a scrollbar, re fetch the MouseEventWithHitTestResults
1293 // in case the scrollbar widget was destroyed when the mouse event was handl ed. 1293 // in case the scrollbar widget was destroyed when the mouse event was handl ed.
1294 if (mev.scrollbar()) { 1294 if (mev.scrollbar()) {
1295 const bool wasLastScrollBar = mev.scrollbar() == m_lastScrollbarUnderMou se.get(); 1295 const bool wasLastScrollBar = mev.scrollbar() == m_lastScrollbarUnderMou se.get();
1296 HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::Active ); 1296 HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::Active );
1297 mev = m_frame->document()->prepareMouseEvent(request, documentPoint, mou seEvent); 1297 mev = m_frame->document()->prepareMouseEvent(request, documentPoint, mou seEvent);
1298 if (wasLastScrollBar && mev.scrollbar() != m_lastScrollbarUnderMouse.get ()) 1298 if (wasLastScrollBar && mev.scrollbar() != m_lastScrollbarUnderMouse.get ())
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
1448 1448
1449 bool swallowEvent = false; 1449 bool swallowEvent = false;
1450 RefPtr<LocalFrame> newSubframe = m_capturingMouseEventsNode.get() ? subframe ForTargetNode(m_capturingMouseEventsNode.get()) : subframeForHitTestResult(mev); 1450 RefPtr<LocalFrame> newSubframe = m_capturingMouseEventsNode.get() ? subframe ForTargetNode(m_capturingMouseEventsNode.get()) : subframeForHitTestResult(mev);
1451 1451
1452 // We want mouseouts to happen first, from the inside out. First send a mov e event to the last subframe so that it will fire mouseouts. 1452 // We want mouseouts to happen first, from the inside out. First send a mov e event to the last subframe so that it will fire mouseouts.
1453 if (m_lastMouseMoveEventSubframe && m_lastMouseMoveEventSubframe->tree().isD escendantOf(m_frame) && m_lastMouseMoveEventSubframe != newSubframe) 1453 if (m_lastMouseMoveEventSubframe && m_lastMouseMoveEventSubframe->tree().isD escendantOf(m_frame) && m_lastMouseMoveEventSubframe != newSubframe)
1454 passMouseMoveEventToSubframe(mev, m_lastMouseMoveEventSubframe.get()); 1454 passMouseMoveEventToSubframe(mev, m_lastMouseMoveEventSubframe.get());
1455 1455
1456 if (newSubframe) { 1456 if (newSubframe) {
1457 // Update over/out state before passing the event to the subframe. 1457 // Update over/out state before passing the event to the subframe.
1458 updateMouseEventTargetNode(mev.targetNode(), mouseEvent, true); 1458 updateMouseEventTargetNode(mev.innerNode(), mouseEvent, true);
1459 1459
1460 // Event dispatch in updateMouseEventTargetNode may have caused the subf rame of the target 1460 // Event dispatch in updateMouseEventTargetNode may have caused the subf rame of the target
1461 // node to be detached from its FrameView, in which case the event shoul d not be passed. 1461 // node to be detached from its FrameView, in which case the event shoul d not be passed.
1462 if (newSubframe->view()) 1462 if (newSubframe->view())
1463 swallowEvent |= passMouseMoveEventToSubframe(mev, newSubframe.get(), hoveredNode); 1463 swallowEvent |= passMouseMoveEventToSubframe(mev, newSubframe.get(), hoveredNode);
1464 } else { 1464 } else {
1465 if (scrollbar && !m_mousePressed) 1465 if (scrollbar && !m_mousePressed)
1466 scrollbar->mouseMoved(mouseEvent); // Handle hover effects on platfo rms that support visual feedback on scrollbar hovering. 1466 scrollbar->mouseMoved(mouseEvent); // Handle hover effects on platfo rms that support visual feedback on scrollbar hovering.
1467 if (FrameView* view = m_frame->view()) { 1467 if (FrameView* view = m_frame->view()) {
1468 OptionalCursor optionalCursor = selectCursor(mev.hitTestResult()); 1468 OptionalCursor optionalCursor = selectCursor(mev.hitTestResult());
1469 if (optionalCursor.isCursorChange()) { 1469 if (optionalCursor.isCursorChange()) {
1470 m_currentMouseCursor = optionalCursor.cursor(); 1470 m_currentMouseCursor = optionalCursor.cursor();
1471 view->setCursor(m_currentMouseCursor); 1471 view->setCursor(m_currentMouseCursor);
1472 } 1472 }
1473 } 1473 }
1474 } 1474 }
1475 1475
1476 m_lastMouseMoveEventSubframe = newSubframe; 1476 m_lastMouseMoveEventSubframe = newSubframe;
1477 1477
1478 if (swallowEvent) 1478 if (swallowEvent)
1479 return true; 1479 return true;
1480 1480
1481 swallowEvent = !dispatchMouseEvent(EventTypeNames::mousemove, mev.targetNode (), 0, mouseEvent, true); 1481 swallowEvent = !dispatchMouseEvent(EventTypeNames::mousemove, mev.innerNode( ), 0, mouseEvent, true);
1482 if (!swallowEvent) 1482 if (!swallowEvent)
1483 swallowEvent = handleMouseDraggedEvent(mev); 1483 swallowEvent = handleMouseDraggedEvent(mev);
1484 1484
1485 return swallowEvent; 1485 return swallowEvent;
1486 } 1486 }
1487 1487
1488 void EventHandler::invalidateClick() 1488 void EventHandler::invalidateClick()
1489 { 1489 {
1490 m_clickCount = 0; 1490 m_clickCount = 0;
1491 m_clickNode = nullptr; 1491 m_clickNode = nullptr;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1544 1544
1545 HitTestRequest::HitTestRequestType hitType = HitTestRequest::Release; 1545 HitTestRequest::HitTestRequestType hitType = HitTestRequest::Release;
1546 HitTestRequest request(hitType); 1546 HitTestRequest request(hitType);
1547 MouseEventWithHitTestResults mev = prepareMouseEvent(request, mouseEvent); 1547 MouseEventWithHitTestResults mev = prepareMouseEvent(request, mouseEvent);
1548 LocalFrame* subframe = m_capturingMouseEventsNode.get() ? subframeForTargetN ode(m_capturingMouseEventsNode.get()) : subframeForHitTestResult(mev); 1548 LocalFrame* subframe = m_capturingMouseEventsNode.get() ? subframeForTargetN ode(m_capturingMouseEventsNode.get()) : subframeForHitTestResult(mev);
1549 if (m_eventHandlerWillResetCapturingMouseEventsNode) 1549 if (m_eventHandlerWillResetCapturingMouseEventsNode)
1550 m_capturingMouseEventsNode = nullptr; 1550 m_capturingMouseEventsNode = nullptr;
1551 if (subframe && passMouseReleaseEventToSubframe(mev, subframe)) 1551 if (subframe && passMouseReleaseEventToSubframe(mev, subframe))
1552 return true; 1552 return true;
1553 1553
1554 bool swallowMouseUpEvent = !dispatchMouseEvent(EventTypeNames::mouseup, mev. targetNode(), m_clickCount, mouseEvent, false); 1554 bool swallowMouseUpEvent = !dispatchMouseEvent(EventTypeNames::mouseup, mev. innerNode(), m_clickCount, mouseEvent, false);
1555 1555
1556 bool contextMenuEvent = mouseEvent.button() == RightButton; 1556 bool contextMenuEvent = mouseEvent.button() == RightButton;
1557 #if OS(MACOSX) 1557 #if OS(MACOSX)
1558 // FIXME: The Mac port achieves the same behavior by checking whether the co ntext menu is currently open in WebPage::mouseEvent(). Consider merging the impl ementations. 1558 // FIXME: The Mac port achieves the same behavior by checking whether the co ntext menu is currently open in WebPage::mouseEvent(). Consider merging the impl ementations.
1559 if (mouseEvent.button() == LeftButton && mouseEvent.modifiers() & PlatformEv ent::CtrlKey) 1559 if (mouseEvent.button() == LeftButton && mouseEvent.modifiers() & PlatformEv ent::CtrlKey)
1560 contextMenuEvent = true; 1560 contextMenuEvent = true;
1561 #endif 1561 #endif
1562 1562
1563 bool swallowClickEvent = false; 1563 bool swallowClickEvent = false;
1564 if (m_clickCount > 0 && !contextMenuEvent && mev.targetNode() && m_clickNode ) { 1564 if (m_clickCount > 0 && !contextMenuEvent && mev.innerNode() && m_clickNode) {
1565 if (Node* clickTargetNode = mev.targetNode()->commonAncestor(*m_clickNod e, parentForClickEvent)) 1565 if (Node* clickTargetNode = mev.innerNode()->commonAncestor(*m_clickNode , parentForClickEvent))
1566 swallowClickEvent = !dispatchMouseEvent(EventTypeNames::click, click TargetNode, m_clickCount, mouseEvent, true); 1566 swallowClickEvent = !dispatchMouseEvent(EventTypeNames::click, click TargetNode, m_clickCount, mouseEvent, true);
1567 } 1567 }
1568 1568
1569 if (m_resizeScrollableArea) { 1569 if (m_resizeScrollableArea) {
1570 m_resizeScrollableArea->setInResizeMode(false); 1570 m_resizeScrollableArea->setInResizeMode(false);
1571 m_resizeScrollableArea = 0; 1571 m_resizeScrollableArea = 0;
1572 } 1572 }
1573 1573
1574 bool swallowMouseReleaseEvent = false; 1574 bool swallowMouseReleaseEvent = false;
1575 if (!swallowMouseUpEvent) 1575 if (!swallowMouseUpEvent)
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
1687 { 1687 {
1688 bool accept = false; 1688 bool accept = false;
1689 1689
1690 if (!m_frame->view()) 1690 if (!m_frame->view())
1691 return false; 1691 return false;
1692 1692
1693 HitTestRequest request(HitTestRequest::ReadOnly); 1693 HitTestRequest request(HitTestRequest::ReadOnly);
1694 MouseEventWithHitTestResults mev = prepareMouseEvent(request, event); 1694 MouseEventWithHitTestResults mev = prepareMouseEvent(request, event);
1695 1695
1696 // Drag events should never go to text nodes (following IE, and proper mouse over/out dispatch) 1696 // Drag events should never go to text nodes (following IE, and proper mouse over/out dispatch)
1697 RefPtrWillBeRawPtr<Node> newTarget = mev.targetNode(); 1697 RefPtrWillBeRawPtr<Node> newTarget = mev.innerNode();
1698 if (newTarget && newTarget->isTextNode()) 1698 if (newTarget && newTarget->isTextNode())
1699 newTarget = NodeRenderingTraversal::parent(newTarget.get()); 1699 newTarget = NodeRenderingTraversal::parent(newTarget.get());
1700 1700
1701 if (AutoscrollController* controller = autoscrollController()) 1701 if (AutoscrollController* controller = autoscrollController())
1702 controller->updateDragAndDrop(newTarget.get(), event.position(), event.t imestamp()); 1702 controller->updateDragAndDrop(newTarget.get(), event.position(), event.t imestamp());
1703 1703
1704 if (m_dragTarget != newTarget) { 1704 if (m_dragTarget != newTarget) {
1705 // FIXME: this ordering was explicitly chosen to match WinIE. However, 1705 // FIXME: this ordering was explicitly chosen to match WinIE. However,
1706 // it is sometimes incorrect when dragging within subframes, as seen wit h 1706 // it is sometimes incorrect when dragging within subframes, as seen wit h
1707 // LayoutTests/fast/events/drag-in-frames.html. 1707 // LayoutTests/fast/events/drag-in-frames.html.
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
2087 return innerFrame->eventHandler().handleGestureEventInFrame(targetedEven t); 2087 return innerFrame->eventHandler().handleGestureEventInFrame(targetedEven t);
2088 2088
2089 // No hit test result, handle in root instance. Perhaps we should just retur n false instead? 2089 // No hit test result, handle in root instance. Perhaps we should just retur n false instead?
2090 return handleGestureEventInFrame(targetedEvent); 2090 return handleGestureEventInFrame(targetedEvent);
2091 } 2091 }
2092 2092
2093 bool EventHandler::handleGestureEventInFrame(const GestureEventWithHitTestResult s& targetedEvent) 2093 bool EventHandler::handleGestureEventInFrame(const GestureEventWithHitTestResult s& targetedEvent)
2094 { 2094 {
2095 ASSERT(!targetedEvent.event().isScrollEvent()); 2095 ASSERT(!targetedEvent.event().isScrollEvent());
2096 2096
2097 RefPtrWillBeRawPtr<Node> eventTarget = targetedEvent.hitTestResult().targetN ode(); 2097 RefPtrWillBeRawPtr<Node> eventTarget = targetedEvent.hitTestResult().innerNo de();
2098 RefPtr<Scrollbar> scrollbar = targetedEvent.hitTestResult().scrollbar(); 2098 RefPtr<Scrollbar> scrollbar = targetedEvent.hitTestResult().scrollbar();
2099 const PlatformGestureEvent& gestureEvent = targetedEvent.event(); 2099 const PlatformGestureEvent& gestureEvent = targetedEvent.event();
2100 2100
2101 if (scrollbar) { 2101 if (scrollbar) {
2102 bool eventSwallowed = scrollbar->gestureEvent(gestureEvent); 2102 bool eventSwallowed = scrollbar->gestureEvent(gestureEvent);
2103 if (gestureEvent.type() == PlatformEvent::GestureTapDown && eventSwallow ed) 2103 if (gestureEvent.type() == PlatformEvent::GestureTapDown && eventSwallow ed)
2104 m_scrollbarHandlingScrollGesture = scrollbar; 2104 m_scrollbarHandlingScrollGesture = scrollbar;
2105 if (eventSwallowed) 2105 if (eventSwallowed)
2106 return true; 2106 return true;
2107 } 2107 }
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
2307 } 2307 }
2308 } 2308 }
2309 #if OS(ANDROID) 2309 #if OS(ANDROID)
2310 bool shouldLongPressSelectWord = true; 2310 bool shouldLongPressSelectWord = true;
2311 #else 2311 #else
2312 bool shouldLongPressSelectWord = m_frame->settings() && m_frame->settings()- >touchEditingEnabled(); 2312 bool shouldLongPressSelectWord = m_frame->settings() && m_frame->settings()- >touchEditingEnabled();
2313 #endif 2313 #endif
2314 if (shouldLongPressSelectWord) { 2314 if (shouldLongPressSelectWord) {
2315 IntPoint hitTestPoint = m_frame->view()->windowToContents(gestureEvent.p osition()); 2315 IntPoint hitTestPoint = m_frame->view()->windowToContents(gestureEvent.p osition());
2316 HitTestResult result = hitTestResultAtPoint(hitTestPoint); 2316 HitTestResult result = hitTestResultAtPoint(hitTestPoint);
2317 Node* innerNode = result.targetNode(); 2317 Node* innerNode = result.innerNode();
2318 if (!result.isLiveLink() && innerNode && (innerNode->isContentEditable() || innerNode->isTextNode())) { 2318 if (!result.isLiveLink() && innerNode && (innerNode->isContentEditable() || innerNode->isTextNode())) {
2319 selectClosestWordFromHitTestResult(result, DontAppendTrailingWhitesp ace); 2319 selectClosestWordFromHitTestResult(result, DontAppendTrailingWhitesp ace);
2320 if (m_frame->selection().isRange()) { 2320 if (m_frame->selection().isRange()) {
2321 focusDocumentView(); 2321 focusDocumentView();
2322 return true; 2322 return true;
2323 } 2323 }
2324 } 2324 }
2325 } 2325 }
2326 return sendContextMenuEventForGesture(targetedEvent); 2326 return sendContextMenuEventForGesture(targetedEvent);
2327 } 2327 }
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
2701 m_mousePressed = false; 2701 m_mousePressed = false;
2702 LayoutPoint viewportPos = v->windowToContents(event.position()); 2702 LayoutPoint viewportPos = v->windowToContents(event.position());
2703 HitTestRequest request(HitTestRequest::Active); 2703 HitTestRequest request(HitTestRequest::Active);
2704 MouseEventWithHitTestResults mev = doc->prepareMouseEvent(request, viewportP os, event); 2704 MouseEventWithHitTestResults mev = doc->prepareMouseEvent(request, viewportP os, event);
2705 2705
2706 if (!m_frame->selection().contains(viewportPos) 2706 if (!m_frame->selection().contains(viewportPos)
2707 && !mev.scrollbar() 2707 && !mev.scrollbar()
2708 // FIXME: In the editable case, word selection sometimes selects content that isn't underneath the mouse. 2708 // FIXME: In the editable case, word selection sometimes selects content that isn't underneath the mouse.
2709 // If the selection is non-editable, we do word selection to make it eas ier to use the contextual menu items 2709 // If the selection is non-editable, we do word selection to make it eas ier to use the contextual menu items
2710 // available for text selections. But only if we're above text. 2710 // available for text selections. But only if we're above text.
2711 && (m_frame->selection().isContentEditable() || (mev.targetNode() && mev .targetNode()->isTextNode()))) { 2711 && (m_frame->selection().isContentEditable() || (mev.innerNode() && mev. innerNode()->isTextNode()))) {
2712 m_mouseDownMayStartSelect = true; // context menu events are always allo wed to perform a selection 2712 m_mouseDownMayStartSelect = true; // context menu events are always allo wed to perform a selection
2713 2713
2714 if (mev.hitTestResult().isMisspelled()) 2714 if (mev.hitTestResult().isMisspelled())
2715 selectClosestMisspellingFromMouseEvent(mev); 2715 selectClosestMisspellingFromMouseEvent(mev);
2716 else if (m_frame->editor().behavior().shouldSelectOnContextualMenuClick( )) 2716 else if (m_frame->editor().behavior().shouldSelectOnContextualMenuClick( ))
2717 selectClosestWordOrLinkFromMouseEvent(mev); 2717 selectClosestWordOrLinkFromMouseEvent(mev);
2718 } 2718 }
2719 2719
2720 return !dispatchMouseEvent(EventTypeNames::contextmenu, mev.targetNode(), 0, event, false); 2720 return !dispatchMouseEvent(EventTypeNames::contextmenu, mev.innerNode(), 0, event, false);
2721 } 2721 }
2722 2722
2723 bool EventHandler::sendContextMenuEventForKey() 2723 bool EventHandler::sendContextMenuEventForKey()
2724 { 2724 {
2725 FrameView* view = m_frame->view(); 2725 FrameView* view = m_frame->view();
2726 if (!view) 2726 if (!view)
2727 return false; 2727 return false;
2728 2728
2729 Document* doc = m_frame->document(); 2729 Document* doc = m_frame->document();
2730 if (!doc) 2730 if (!doc)
(...skipping 1082 matching lines...) Expand 10 before | Expand all | Expand 10 after
3813 3813
3814 bool EventHandler::passMousePressEventToSubframe(MouseEventWithHitTestResults& m ev, LocalFrame* subframe) 3814 bool EventHandler::passMousePressEventToSubframe(MouseEventWithHitTestResults& m ev, LocalFrame* subframe)
3815 { 3815 {
3816 // If we're clicking into a frame that is selected, the frame will appear 3816 // If we're clicking into a frame that is selected, the frame will appear
3817 // greyed out even though we're clicking on the selection. This looks 3817 // greyed out even though we're clicking on the selection. This looks
3818 // really strange (having the whole frame be greyed out), so we deselect the 3818 // really strange (having the whole frame be greyed out), so we deselect the
3819 // selection. 3819 // selection.
3820 IntPoint p = m_frame->view()->windowToContents(mev.event().position()); 3820 IntPoint p = m_frame->view()->windowToContents(mev.event().position());
3821 if (m_frame->selection().contains(p)) { 3821 if (m_frame->selection().contains(p)) {
3822 VisiblePosition visiblePos( 3822 VisiblePosition visiblePos(
3823 mev.targetNode()->renderer()->positionForPoint(mev.localPoint())); 3823 mev.innerNode()->renderer()->positionForPoint(mev.localPoint()));
3824 VisibleSelection newSelection(visiblePos); 3824 VisibleSelection newSelection(visiblePos);
3825 m_frame->selection().setSelection(newSelection); 3825 m_frame->selection().setSelection(newSelection);
3826 } 3826 }
3827 3827
3828 subframe->eventHandler().handleMousePressEvent(mev.event()); 3828 subframe->eventHandler().handleMousePressEvent(mev.event());
3829 return true; 3829 return true;
3830 } 3830 }
3831 3831
3832 bool EventHandler::passMouseMoveEventToSubframe(MouseEventWithHitTestResults& me v, LocalFrame* subframe, HitTestResult* hoveredNode) 3832 bool EventHandler::passMouseMoveEventToSubframe(MouseEventWithHitTestResults& me v, LocalFrame* subframe, HitTestResult* hoveredNode)
3833 { 3833 {
(...skipping 20 matching lines...) Expand all
3854 // the event via an EventTargetNode dispatch when this returns false. 3854 // the event via an EventTargetNode dispatch when this returns false.
3855 if (!widget->isFrameView()) 3855 if (!widget->isFrameView())
3856 return false; 3856 return false;
3857 3857
3858 return toFrameView(widget)->frame().eventHandler().handleWheelEvent(wheelEve nt); 3858 return toFrameView(widget)->frame().eventHandler().handleWheelEvent(wheelEve nt);
3859 } 3859 }
3860 3860
3861 bool EventHandler::passWidgetMouseDownEventToWidget(const MouseEventWithHitTestR esults& event) 3861 bool EventHandler::passWidgetMouseDownEventToWidget(const MouseEventWithHitTestR esults& event)
3862 { 3862 {
3863 // Figure out which view to send the event to. 3863 // Figure out which view to send the event to.
3864 if (!event.targetNode() || !event.targetNode()->renderer() || !event.targetN ode()->renderer()->isWidget()) 3864 if (!event.innerNode() || !event.innerNode()->renderer() || !event.innerNode ()->renderer()->isWidget())
3865 return false; 3865 return false;
3866 return false; 3866 return false;
3867 } 3867 }
3868 3868
3869 PassRefPtrWillBeRawPtr<DataTransfer> EventHandler::createDraggingDataTransfer() const 3869 PassRefPtrWillBeRawPtr<DataTransfer> EventHandler::createDraggingDataTransfer() const
3870 { 3870 {
3871 return DataTransfer::create(DataTransfer::DragAndDrop, DataTransferWritable, DataObject::create()); 3871 return DataTransfer::create(DataTransfer::DragAndDrop, DataTransferWritable, DataObject::create());
3872 } 3872 }
3873 3873
3874 void EventHandler::focusDocumentView() 3874 void EventHandler::focusDocumentView()
3875 { 3875 {
3876 Page* page = m_frame->page(); 3876 Page* page = m_frame->page();
3877 if (!page) 3877 if (!page)
3878 return; 3878 return;
3879 page->focusController().focusDocumentView(m_frame); 3879 page->focusController().focusDocumentView(m_frame);
3880 } 3880 }
3881 3881
3882 unsigned EventHandler::accessKeyModifiers() 3882 unsigned EventHandler::accessKeyModifiers()
3883 { 3883 {
3884 #if OS(MACOSX) 3884 #if OS(MACOSX)
3885 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; 3885 return PlatformEvent::CtrlKey | PlatformEvent::AltKey;
3886 #else 3886 #else
3887 return PlatformEvent::AltKey; 3887 return PlatformEvent::AltKey;
3888 #endif 3888 #endif
3889 } 3889 }
3890 3890
3891 } // namespace blink 3891 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | Source/core/page/EventWithHitTestResults.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698