OLD | NEW |
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 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
411 } | 411 } |
412 | 412 |
413 m_frame->selection().setNonDirectionalSelectionIfNeeded(selection, granulari
ty); | 413 m_frame->selection().setNonDirectionalSelectionIfNeeded(selection, granulari
ty); |
414 | 414 |
415 return true; | 415 return true; |
416 } | 416 } |
417 | 417 |
418 void EventHandler::selectClosestWordFromHitTestResult(const HitTestResult& resul
t, AppendTrailingWhitespace appendTrailingWhitespace) | 418 void EventHandler::selectClosestWordFromHitTestResult(const HitTestResult& resul
t, AppendTrailingWhitespace appendTrailingWhitespace) |
419 { | 419 { |
420 Node* innerNode = result.targetNode(); | 420 Node* innerNode = result.targetNode(); |
| 421 RenderObject* renderer = result.renderer(); |
421 VisibleSelection newSelection; | 422 VisibleSelection newSelection; |
422 | 423 |
423 if (innerNode && innerNode->renderer()) { | 424 if (innerNode && renderer) { |
424 VisiblePosition pos(innerNode->renderer()->positionForPoint(result.local
Point())); | 425 VisiblePosition pos(renderer->positionForPoint(result.localPoint())); |
425 if (pos.isNotNull()) { | 426 if (pos.isNotNull()) { |
426 newSelection = VisibleSelection(pos); | 427 newSelection = VisibleSelection(pos); |
427 newSelection.expandUsingGranularity(WordGranularity); | 428 newSelection.expandUsingGranularity(WordGranularity); |
428 } | 429 } |
429 | 430 |
430 if (appendTrailingWhitespace == ShouldAppendTrailingWhitespace && newSel
ection.isRange()) | 431 if (appendTrailingWhitespace == ShouldAppendTrailingWhitespace && newSel
ection.isRange()) |
431 newSelection.appendTrailingWhitespace(); | 432 newSelection.appendTrailingWhitespace(); |
432 | 433 |
433 updateSelectionForMouseDownDispatchingSelectStart(innerNode, expandSelec
tionToRespectUserSelectAll(innerNode, newSelection), WordGranularity); | 434 updateSelectionForMouseDownDispatchingSelectStart(innerNode, expandSelec
tionToRespectUserSelectAll(innerNode, newSelection), WordGranularity); |
434 } | 435 } |
435 } | 436 } |
436 | 437 |
437 void EventHandler::selectClosestMisspellingFromHitTestResult(const HitTestResult
& result, AppendTrailingWhitespace appendTrailingWhitespace) | 438 void EventHandler::selectClosestMisspellingFromHitTestResult(const HitTestResult
& result, AppendTrailingWhitespace appendTrailingWhitespace) |
438 { | 439 { |
439 Node* innerNode = result.targetNode(); | 440 Node* innerNode = result.targetNode(); |
| 441 RenderObject* renderer = result.renderer(); |
440 VisibleSelection newSelection; | 442 VisibleSelection newSelection; |
441 | 443 |
442 if (innerNode && innerNode->renderer()) { | 444 if (innerNode && renderer) { |
443 VisiblePosition pos(innerNode->renderer()->positionForPoint(result.local
Point())); | 445 VisiblePosition pos(renderer->positionForPoint(result.localPoint())); |
444 Position start = pos.deepEquivalent(); | 446 Position start = pos.deepEquivalent(); |
445 Position end = pos.deepEquivalent(); | 447 Position end = pos.deepEquivalent(); |
446 if (pos.isNotNull()) { | 448 if (pos.isNotNull()) { |
447 Vector<DocumentMarker*> markers = innerNode->document().markers()->m
arkersInRange( | 449 Vector<DocumentMarker*> markers = innerNode->document().markers()->m
arkersInRange( |
448 makeRange(pos, pos).get(), DocumentMarker::Spelling | DocumentMa
rker::Grammar); | 450 makeRange(pos, pos).get(), DocumentMarker::Spelling | DocumentMa
rker::Grammar); |
449 if (markers.size() == 1) { | 451 if (markers.size() == 1) { |
450 start.moveToOffset(markers[0]->startOffset()); | 452 start.moveToOffset(markers[0]->startOffset()); |
451 end.moveToOffset(markers[0]->endOffset()); | 453 end.moveToOffset(markers[0]->endOffset()); |
452 newSelection = VisibleSelection(start, end); | 454 newSelection = VisibleSelection(start, end); |
453 } | 455 } |
(...skipping 21 matching lines...) Expand all Loading... |
475 (result.event().clickCount() == 2 && m_frame->editor().isSelectTrail
ingWhitespaceEnabled()) ? ShouldAppendTrailingWhitespace : DontAppendTrailingWhi
tespace); | 477 (result.event().clickCount() == 2 && m_frame->editor().isSelectTrail
ingWhitespaceEnabled()) ? ShouldAppendTrailingWhitespace : DontAppendTrailingWhi
tespace); |
476 } | 478 } |
477 } | 479 } |
478 | 480 |
479 void EventHandler::selectClosestWordOrLinkFromMouseEvent(const MouseEventWithHit
TestResults& result) | 481 void EventHandler::selectClosestWordOrLinkFromMouseEvent(const MouseEventWithHit
TestResults& result) |
480 { | 482 { |
481 if (!result.hitTestResult().isLiveLink()) | 483 if (!result.hitTestResult().isLiveLink()) |
482 return selectClosestWordFromMouseEvent(result); | 484 return selectClosestWordFromMouseEvent(result); |
483 | 485 |
484 Node* innerNode = result.targetNode(); | 486 Node* innerNode = result.targetNode(); |
| 487 RenderObject* renderer = result.hitTestResult().renderer(); |
485 | 488 |
486 if (innerNode && innerNode->renderer() && m_mouseDownMayStartSelect) { | 489 if (innerNode && renderer && m_mouseDownMayStartSelect) { |
487 VisibleSelection newSelection; | 490 VisibleSelection newSelection; |
488 Element* URLElement = result.hitTestResult().URLElement(); | 491 Element* URLElement = result.hitTestResult().URLElement(); |
489 VisiblePosition pos(innerNode->renderer()->positionForPoint(result.local
Point())); | 492 VisiblePosition pos(renderer->positionForPoint(result.localPoint())); |
490 if (pos.isNotNull() && pos.deepEquivalent().deprecatedNode()->isDescenda
ntOf(URLElement)) | 493 if (pos.isNotNull() && pos.deepEquivalent().deprecatedNode()->isDescenda
ntOf(URLElement)) |
491 newSelection = VisibleSelection::selectionFromContentsOfNode(URLElem
ent); | 494 newSelection = VisibleSelection::selectionFromContentsOfNode(URLElem
ent); |
492 | 495 |
493 updateSelectionForMouseDownDispatchingSelectStart(innerNode, expandSelec
tionToRespectUserSelectAll(innerNode, newSelection), WordGranularity); | 496 updateSelectionForMouseDownDispatchingSelectStart(innerNode, expandSelec
tionToRespectUserSelectAll(innerNode, newSelection), WordGranularity); |
494 } | 497 } |
495 } | 498 } |
496 | 499 |
497 bool EventHandler::handleMousePressEventDoubleClick(const MouseEventWithHitTestR
esults& event) | 500 bool EventHandler::handleMousePressEventDoubleClick(const MouseEventWithHitTestR
esults& event) |
498 { | 501 { |
499 if (event.event().button() != LeftButton) | 502 if (event.event().button() != LeftButton) |
(...skipping 11 matching lines...) Expand all Loading... |
511 } | 514 } |
512 return true; | 515 return true; |
513 } | 516 } |
514 | 517 |
515 bool EventHandler::handleMousePressEventTripleClick(const MouseEventWithHitTestR
esults& event) | 518 bool EventHandler::handleMousePressEventTripleClick(const MouseEventWithHitTestR
esults& event) |
516 { | 519 { |
517 if (event.event().button() != LeftButton) | 520 if (event.event().button() != LeftButton) |
518 return false; | 521 return false; |
519 | 522 |
520 Node* innerNode = event.targetNode(); | 523 Node* innerNode = event.targetNode(); |
521 if (!(innerNode && innerNode->renderer() && m_mouseDownMayStartSelect)) | 524 RenderObject* renderer = event.hitTestResult().renderer(); |
| 525 if (!(innerNode && renderer && m_mouseDownMayStartSelect)) |
522 return false; | 526 return false; |
523 | 527 |
524 VisibleSelection newSelection; | 528 VisibleSelection newSelection; |
525 VisiblePosition pos(innerNode->renderer()->positionForPoint(event.localPoint
())); | 529 VisiblePosition pos(renderer->positionForPoint(event.localPoint())); |
526 if (pos.isNotNull()) { | 530 if (pos.isNotNull()) { |
527 newSelection = VisibleSelection(pos); | 531 newSelection = VisibleSelection(pos); |
528 newSelection.expandUsingGranularity(ParagraphGranularity); | 532 newSelection.expandUsingGranularity(ParagraphGranularity); |
529 } | 533 } |
530 | 534 |
531 return updateSelectionForMouseDownDispatchingSelectStart(innerNode, expandSe
lectionToRespectUserSelectAll(innerNode, newSelection), ParagraphGranularity); | 535 return updateSelectionForMouseDownDispatchingSelectStart(innerNode, expandSe
lectionToRespectUserSelectAll(innerNode, newSelection), ParagraphGranularity); |
532 } | 536 } |
533 | 537 |
534 static int textDistance(const Position& start, const Position& end) | 538 static int textDistance(const Position& start, const Position& end) |
535 { | 539 { |
536 RefPtr<Range> range = Range::create(*start.document(), start, end); | 540 RefPtr<Range> range = Range::create(*start.document(), start, end); |
537 return TextIterator::rangeLength(range.get(), true); | 541 return TextIterator::rangeLength(range.get(), true); |
538 } | 542 } |
539 | 543 |
540 bool EventHandler::handleMousePressEventSingleClick(const MouseEventWithHitTestR
esults& event) | 544 bool EventHandler::handleMousePressEventSingleClick(const MouseEventWithHitTestR
esults& event) |
541 { | 545 { |
542 m_frame->document()->updateLayoutIgnorePendingStylesheets(); | 546 m_frame->document()->updateLayoutIgnorePendingStylesheets(); |
543 Node* innerNode = event.targetNode(); | 547 Node* innerNode = event.targetNode(); |
544 if (!(innerNode && innerNode->renderer() && m_mouseDownMayStartSelect)) | 548 RenderObject* renderer = event.hitTestResult().renderer(); |
| 549 if (!(innerNode && renderer && m_mouseDownMayStartSelect)) |
545 return false; | 550 return false; |
546 | 551 |
547 // Extend the selection if the Shift key is down, unless the click is in a l
ink. | 552 // Extend the selection if the Shift key is down, unless the click is in a l
ink. |
548 bool extendSelection = event.event().shiftKey() && !event.isOverLink(); | 553 bool extendSelection = event.event().shiftKey() && !event.isOverLink(); |
549 | 554 |
550 // Don't restart the selection when the mouse is pressed on an | 555 // Don't restart the selection when the mouse is pressed on an |
551 // existing selection so we can allow for text dragging. | 556 // existing selection so we can allow for text dragging. |
552 if (FrameView* view = m_frame->view()) { | 557 if (FrameView* view = m_frame->view()) { |
553 LayoutPoint vPoint = view->windowToContents(event.event().position()); | 558 LayoutPoint vPoint = view->windowToContents(event.event().position()); |
554 if (!extendSelection && m_frame->selection().contains(vPoint)) { | 559 if (!extendSelection && m_frame->selection().contains(vPoint)) { |
555 m_mouseDownWasSingleClickInSelection = true; | 560 m_mouseDownWasSingleClickInSelection = true; |
556 return false; | 561 return false; |
557 } | 562 } |
558 } | 563 } |
559 | 564 |
560 VisiblePosition visiblePos(innerNode->renderer()->positionForPoint(event.loc
alPoint())); | 565 VisiblePosition visiblePos(renderer->positionForPoint(event.localPoint())); |
561 if (visiblePos.isNull()) | 566 if (visiblePos.isNull()) |
562 visiblePos = VisiblePosition(firstPositionInOrBeforeNode(innerNode), DOW
NSTREAM); | 567 visiblePos = VisiblePosition(firstPositionInOrBeforeNode(innerNode), DOW
NSTREAM); |
563 Position pos = visiblePos.deepEquivalent(); | 568 Position pos = visiblePos.deepEquivalent(); |
564 | 569 |
565 VisibleSelection newSelection = m_frame->selection().selection(); | 570 VisibleSelection newSelection = m_frame->selection().selection(); |
566 TextGranularity granularity = CharacterGranularity; | 571 TextGranularity granularity = CharacterGranularity; |
567 | 572 |
568 if (extendSelection && newSelection.isCaretOrRange()) { | 573 if (extendSelection && newSelection.isCaretOrRange()) { |
569 VisibleSelection selectionInUserSelectAll = expandSelectionToRespectUser
SelectAll(innerNode, VisibleSelection(pos)); | 574 VisibleSelection selectionInUserSelectAll = expandSelectionToRespectUser
SelectAll(innerNode, VisibleSelection(pos)); |
570 if (selectionInUserSelectAll.isRange()) { | 575 if (selectionInUserSelectAll.isRange()) { |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
680 if (!m_mousePressed) | 685 if (!m_mousePressed) |
681 return false; | 686 return false; |
682 | 687 |
683 if (handleDrag(event, ShouldCheckDragHysteresis)) | 688 if (handleDrag(event, ShouldCheckDragHysteresis)) |
684 return true; | 689 return true; |
685 | 690 |
686 Node* targetNode = event.targetNode(); | 691 Node* targetNode = event.targetNode(); |
687 if (event.event().button() != LeftButton || !targetNode) | 692 if (event.event().button() != LeftButton || !targetNode) |
688 return false; | 693 return false; |
689 | 694 |
690 RenderObject* renderer = targetNode->renderer(); | 695 RenderObject* renderer = event.hitTestResult().renderer(); |
691 if (!renderer) { | 696 if (!renderer) { |
692 Node* parent = EventPathWalker::parent(targetNode); | 697 Node* parent = EventPathWalker::parent(targetNode); |
693 if (!parent) | 698 if (!parent) |
694 return false; | 699 return false; |
695 | 700 |
696 renderer = parent->renderer(); | 701 renderer = parent->renderer(); |
697 if (!renderer || !renderer->isListBox()) | 702 if (!renderer || !renderer->isListBox()) |
698 return false; | 703 return false; |
699 } | 704 } |
700 | 705 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
735 | 740 |
736 void EventHandler::updateSelectionForMouseDrag(const HitTestResult& hitTestResul
t) | 741 void EventHandler::updateSelectionForMouseDrag(const HitTestResult& hitTestResul
t) |
737 { | 742 { |
738 if (!m_mouseDownMayStartSelect) | 743 if (!m_mouseDownMayStartSelect) |
739 return; | 744 return; |
740 | 745 |
741 Node* target = hitTestResult.targetNode(); | 746 Node* target = hitTestResult.targetNode(); |
742 if (!target) | 747 if (!target) |
743 return; | 748 return; |
744 | 749 |
| 750 RenderObject* targetRenderer = hitTestResult.renderer(); |
745 VisiblePosition targetPosition = m_frame->selection().selection().visiblePos
itionRespectingEditingBoundary(hitTestResult.localPoint(), target); | 751 VisiblePosition targetPosition = m_frame->selection().selection().visiblePos
itionRespectingEditingBoundary(hitTestResult.localPoint(), target); |
746 // Don't modify the selection if we're not on a node. | 752 // Don't modify the selection if we're not on a node. |
747 if (targetPosition.isNull()) | 753 if (targetPosition.isNull()) |
748 return; | 754 return; |
749 | 755 |
750 // Restart the selection if this is the first mouse move. This work is usual
ly | 756 // Restart the selection if this is the first mouse move. This work is usual
ly |
751 // done in handleMousePressEvent, but not if the mouse press was on an exist
ing selection. | 757 // done in handleMousePressEvent, but not if the mouse press was on an exist
ing selection. |
752 VisibleSelection newSelection = m_frame->selection().selection(); | 758 VisibleSelection newSelection = m_frame->selection().selection(); |
753 | 759 |
754 // Special case to limit selection to the containing block for SVG text. | 760 // Special case to limit selection to the containing block for SVG text. |
755 // FIXME: Isn't there a better non-SVG-specific way to do this? | 761 // FIXME: Isn't there a better non-SVG-specific way to do this? |
756 if (Node* selectionBaseNode = newSelection.base().deprecatedNode()) | 762 if (Node* selectionBaseNode = newSelection.base().deprecatedNode()) |
757 if (RenderObject* selectionBaseRenderer = selectionBaseNode->renderer()) | 763 if (RenderObject* selectionBaseRenderer = selectionBaseNode->renderer()) |
758 if (selectionBaseRenderer->isSVGText()) | 764 if (selectionBaseRenderer->isSVGText()) |
759 if (target->renderer()->containingBlock() != selectionBaseRender
er->containingBlock()) | 765 if (targetRenderer->containingBlock() != selectionBaseRenderer->
containingBlock()) |
760 return; | 766 return; |
761 | 767 |
762 if (m_selectionInitiationState == HaveNotStartedSelection && !dispatchSelect
Start(target)) | 768 if (m_selectionInitiationState == HaveNotStartedSelection && !dispatchSelect
Start(target)) |
763 return; | 769 return; |
764 | 770 |
765 if (m_selectionInitiationState != ExtendedSelection) { | 771 if (m_selectionInitiationState != ExtendedSelection) { |
766 // Always extend selection here because it's caused by a mouse drag | 772 // Always extend selection here because it's caused by a mouse drag |
767 m_selectionInitiationState = ExtendedSelection; | 773 m_selectionInitiationState = ExtendedSelection; |
768 newSelection = VisibleSelection(targetPosition); | 774 newSelection = VisibleSelection(targetPosition); |
769 } | 775 } |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
822 // Clear the selection if the mouse didn't move after the last mouse | 828 // Clear the selection if the mouse didn't move after the last mouse |
823 // press and it's not a context menu click. We do this so when clicking | 829 // press and it's not a context menu click. We do this so when clicking |
824 // on the selection, the selection goes away. However, if we are | 830 // on the selection, the selection goes away. However, if we are |
825 // editing, place the caret. | 831 // editing, place the caret. |
826 if (m_mouseDownWasSingleClickInSelection && m_selectionInitiationState != Ex
tendedSelection | 832 if (m_mouseDownWasSingleClickInSelection && m_selectionInitiationState != Ex
tendedSelection |
827 && m_dragStartPos == event.event().position() | 833 && m_dragStartPos == event.event().position() |
828 && m_frame->selection().isRange() | 834 && m_frame->selection().isRange() |
829 && event.event().button() != RightButton) { | 835 && event.event().button() != RightButton) { |
830 VisibleSelection newSelection; | 836 VisibleSelection newSelection; |
831 Node* node = event.targetNode(); | 837 Node* node = event.targetNode(); |
| 838 RenderObject* renderer = event.hitTestResult().renderer(); |
832 bool caretBrowsing = m_frame->settings() && m_frame->settings()->caretBr
owsingEnabled(); | 839 bool caretBrowsing = m_frame->settings() && m_frame->settings()->caretBr
owsingEnabled(); |
833 if (node && (caretBrowsing || node->rendererIsEditable()) && node->rende
rer()) { | 840 if (node && (caretBrowsing || node->rendererIsEditable()) && renderer) |
834 VisiblePosition pos = VisiblePosition(node->renderer()->positionForP
oint(event.localPoint())); | 841 newSelection = VisibleSelection(VisiblePosition(renderer->positionFo
rPoint(event.localPoint()))); |
835 newSelection = VisibleSelection(pos); | |
836 } | |
837 | 842 |
838 setSelectionIfNeeded(m_frame->selection(), newSelection); | 843 setSelectionIfNeeded(m_frame->selection(), newSelection); |
839 | 844 |
840 handled = true; | 845 handled = true; |
841 } | 846 } |
842 | 847 |
843 m_frame->selection().notifyRendererOfSelectionChange(UserTriggered); | 848 m_frame->selection().notifyRendererOfSelectionChange(UserTriggered); |
844 | 849 |
845 m_frame->selection().selectFrameElementInParentIfFullySelected(); | 850 m_frame->selection().selectFrameElementInParentIfFullySelected(); |
846 | 851 |
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1094 | 1099 |
1095 Page* page = m_frame->page(); | 1100 Page* page = m_frame->page(); |
1096 if (!page) | 1101 if (!page) |
1097 return NoCursorChange; | 1102 return NoCursorChange; |
1098 #if OS(WIN) | 1103 #if OS(WIN) |
1099 if (panScrollInProgress()) | 1104 if (panScrollInProgress()) |
1100 return NoCursorChange; | 1105 return NoCursorChange; |
1101 #endif | 1106 #endif |
1102 | 1107 |
1103 Node* node = event.targetNode(); | 1108 Node* node = event.targetNode(); |
1104 RenderObject* renderer = node ? node->renderer() : 0; | 1109 RenderObject* renderer = event.hitTestResult().renderer(); |
1105 RenderStyle* style = renderer ? renderer->style() : 0; | 1110 RenderStyle* style = renderer ? renderer->style() : 0; |
1106 bool horizontalText = !style || style->isHorizontalWritingMode(); | 1111 bool horizontalText = !style || style->isHorizontalWritingMode(); |
1107 const Cursor& iBeam = horizontalText ? iBeamCursor() : verticalTextCursor(); | 1112 const Cursor& iBeam = horizontalText ? iBeamCursor() : verticalTextCursor(); |
1108 | 1113 |
1109 if (renderer) { | 1114 if (renderer) { |
1110 Cursor overrideCursor; | 1115 Cursor overrideCursor; |
1111 switch (renderer->getCursor(roundedIntPoint(event.localPoint()), overrid
eCursor)) { | 1116 switch (renderer->getCursor(roundedIntPoint(event.localPoint()), overrid
eCursor)) { |
1112 case SetCursorBasedOnStyle: | 1117 case SetCursorBasedOnStyle: |
1113 break; | 1118 break; |
1114 case SetCursor: | 1119 case SetCursor: |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1321 if (isPanScrollInProgress) { | 1326 if (isPanScrollInProgress) { |
1322 // We invalidate the click when exiting pan scrolling so that we don't i
nadvertently navigate | 1327 // We invalidate the click when exiting pan scrolling so that we don't i
nadvertently navigate |
1323 // away from the current page (e.g. the click was on a hyperlink). See <
rdar://problem/6095023>. | 1328 // away from the current page (e.g. the click was on a hyperlink). See <
rdar://problem/6095023>. |
1324 invalidateClick(); | 1329 invalidateClick(); |
1325 return true; | 1330 return true; |
1326 } | 1331 } |
1327 #endif | 1332 #endif |
1328 | 1333 |
1329 m_clickCount = mouseEvent.clickCount(); | 1334 m_clickCount = mouseEvent.clickCount(); |
1330 m_clickNode = mev.targetNode(); | 1335 m_clickNode = mev.targetNode(); |
| 1336 RenderObject* clickRenderer = mev.hitTestResult().renderer(); |
1331 | 1337 |
1332 if (FrameView* view = m_frame->view()) { | 1338 if (FrameView* view = m_frame->view()) { |
1333 RenderLayer* layer = m_clickNode->renderer() ? m_clickNode->renderer()->
enclosingLayer() : 0; | 1339 RenderLayer* layer = clickRenderer ? clickRenderer->enclosingLayer() : 0
; |
1334 IntPoint p = view->windowToContents(mouseEvent.position()); | 1340 IntPoint p = view->windowToContents(mouseEvent.position()); |
1335 if (layer && layer->isPointInResizeControl(p, ResizerForPointer)) { | 1341 if (layer && layer->isPointInResizeControl(p, ResizerForPointer)) { |
1336 layer->setInResizeMode(true); | 1342 layer->setInResizeMode(true); |
1337 m_resizeLayer = layer; | 1343 m_resizeLayer = layer; |
1338 m_offsetFromResizeCorner = layer->offsetFromResizeCorner(p); | 1344 m_offsetFromResizeCorner = layer->offsetFromResizeCorner(p); |
1339 invalidateClick(); | 1345 invalidateClick(); |
1340 return true; | 1346 return true; |
1341 } | 1347 } |
1342 } | 1348 } |
1343 | 1349 |
(...skipping 2474 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3818 // the event via an EventTargetNode dispatch when this returns false. | 3824 // the event via an EventTargetNode dispatch when this returns false. |
3819 if (!widget->isFrameView()) | 3825 if (!widget->isFrameView()) |
3820 return false; | 3826 return false; |
3821 | 3827 |
3822 return toFrameView(widget)->frame().eventHandler()->handleWheelEvent(wheelEv
ent); | 3828 return toFrameView(widget)->frame().eventHandler()->handleWheelEvent(wheelEv
ent); |
3823 } | 3829 } |
3824 | 3830 |
3825 bool EventHandler::passWidgetMouseDownEventToWidget(const MouseEventWithHitTestR
esults& event) | 3831 bool EventHandler::passWidgetMouseDownEventToWidget(const MouseEventWithHitTestR
esults& event) |
3826 { | 3832 { |
3827 // Figure out which view to send the event to. | 3833 // Figure out which view to send the event to. |
3828 if (!event.targetNode() || !event.targetNode()->renderer() || !event.targetN
ode()->renderer()->isWidget()) | 3834 if (!event.targetNode() || !event.hitTestResult().renderer() || !event.hitTe
stResult().renderer()->isWidget()) |
3829 return false; | 3835 return false; |
3830 return false; | 3836 return false; |
3831 } | 3837 } |
3832 | 3838 |
3833 PassRefPtr<Clipboard> EventHandler::createDraggingClipboard() const | 3839 PassRefPtr<Clipboard> EventHandler::createDraggingClipboard() const |
3834 { | 3840 { |
3835 RefPtr<ChromiumDataObject> dataObject = ChromiumDataObject::create(); | 3841 RefPtr<ChromiumDataObject> dataObject = ChromiumDataObject::create(); |
3836 return ClipboardChromium::create(Clipboard::DragAndDrop, dataObject.get(), C
lipboardWritable, m_frame); | 3842 return ClipboardChromium::create(Clipboard::DragAndDrop, dataObject.get(), C
lipboardWritable, m_frame); |
3837 } | 3843 } |
3838 | 3844 |
3839 void EventHandler::focusDocumentView() | 3845 void EventHandler::focusDocumentView() |
3840 { | 3846 { |
3841 Page* page = m_frame->page(); | 3847 Page* page = m_frame->page(); |
3842 if (!page) | 3848 if (!page) |
3843 return; | 3849 return; |
3844 page->focusController().setFocusedFrame(m_frame); | 3850 page->focusController().setFocusedFrame(m_frame); |
3845 } | 3851 } |
3846 | 3852 |
3847 unsigned EventHandler::accessKeyModifiers() | 3853 unsigned EventHandler::accessKeyModifiers() |
3848 { | 3854 { |
3849 #if OS(MACOSX) | 3855 #if OS(MACOSX) |
3850 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; | 3856 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; |
3851 #else | 3857 #else |
3852 return PlatformEvent::AltKey; | 3858 return PlatformEvent::AltKey; |
3853 #endif | 3859 #endif |
3854 } | 3860 } |
3855 | 3861 |
3856 } // namespace WebCore | 3862 } // namespace WebCore |
OLD | NEW |