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 370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
381 | 381 |
382 WebInputEventResult EventHandler::handleMousePressEvent(const MouseEventWithHitT
estResults& event) | 382 WebInputEventResult EventHandler::handleMousePressEvent(const MouseEventWithHitT
estResults& event) |
383 { | 383 { |
384 TRACE_EVENT0("blink", "EventHandler::handleMousePressEvent"); | 384 TRACE_EVENT0("blink", "EventHandler::handleMousePressEvent"); |
385 | 385 |
386 // Reset drag state. | 386 // Reset drag state. |
387 dragState().m_dragSrc = nullptr; | 387 dragState().m_dragSrc = nullptr; |
388 | 388 |
389 cancelFakeMouseMoveEvent(); | 389 cancelFakeMouseMoveEvent(); |
390 | 390 |
391 m_frame->document()->updateLayoutIgnorePendingStylesheets(); | 391 m_frame->document()->updateStyleAndLayoutIgnorePendingStylesheets(); |
392 | 392 |
393 if (FrameView* frameView = m_frame->view()) { | 393 if (FrameView* frameView = m_frame->view()) { |
394 if (frameView->isPointInScrollbarCorner(event.event().position())) | 394 if (frameView->isPointInScrollbarCorner(event.event().position())) |
395 return WebInputEventResult::NotHandled; | 395 return WebInputEventResult::NotHandled; |
396 } | 396 } |
397 | 397 |
398 bool singleClick = event.event().clickCount() <= 1; | 398 bool singleClick = event.event().clickCount() <= 1; |
399 | 399 |
400 m_mouseDownMayStartDrag = singleClick && !isLinkSelection(event); | 400 m_mouseDownMayStartDrag = singleClick && !isLinkSelection(event); |
401 | 401 |
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
649 const FloatSize& velocity, Node* startNode, Node** stopNode, bool* consumed) | 649 const FloatSize& velocity, Node* startNode, Node** stopNode, bool* consumed) |
650 { | 650 { |
651 if (consumed) | 651 if (consumed) |
652 *consumed = false; | 652 *consumed = false; |
653 if (delta.isZero()) | 653 if (delta.isZero()) |
654 return ScrollResult(); | 654 return ScrollResult(); |
655 | 655 |
656 Node* node = startNode; | 656 Node* node = startNode; |
657 ASSERT(node && node->layoutObject()); | 657 ASSERT(node && node->layoutObject()); |
658 | 658 |
659 m_frame->document()->updateLayoutIgnorePendingStylesheets(); | 659 m_frame->document()->updateStyleAndLayoutIgnorePendingStylesheets(); |
660 | 660 |
661 ScrollResult result; | 661 ScrollResult result; |
662 | 662 |
663 LayoutBox* curBox = node->layoutObject()->enclosingBox(); | 663 LayoutBox* curBox = node->layoutObject()->enclosingBox(); |
664 while (curBox) { | 664 while (curBox) { |
665 // If we're at the stopNode, we should try to scroll it but we shouldn't | 665 // If we're at the stopNode, we should try to scroll it but we shouldn't |
666 // chain past it. | 666 // chain past it. |
667 bool shouldStopChaining = | 667 bool shouldStopChaining = |
668 stopNode && *stopNode && curBox->node() == *stopNode; | 668 stopNode && *stopNode && curBox->node() == *stopNode; |
669 bool wasRootScroller = false; | 669 bool wasRootScroller = false; |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
705 | 705 |
706 if (!node) | 706 if (!node) |
707 node = m_mousePressNode.get(); | 707 node = m_mousePressNode.get(); |
708 | 708 |
709 if ((!node || !node->layoutObject()) && m_frame->view() && !m_frame->view()-
>layoutViewItem().isNull()) | 709 if ((!node || !node->layoutObject()) && m_frame->view() && !m_frame->view()-
>layoutViewItem().isNull()) |
710 node = m_frame->view()->layoutViewItem().node(); | 710 node = m_frame->view()->layoutViewItem().node(); |
711 | 711 |
712 if (!node) | 712 if (!node) |
713 return false; | 713 return false; |
714 | 714 |
715 m_frame->document()->updateLayoutIgnorePendingStylesheets(); | 715 m_frame->document()->updateStyleAndLayoutIgnorePendingStylesheets(); |
716 | 716 |
717 LayoutBox* curBox = node->layoutObject()->enclosingBox(); | 717 LayoutBox* curBox = node->layoutObject()->enclosingBox(); |
718 while (curBox) { | 718 while (curBox) { |
719 ScrollDirectionPhysical physicalDirection = toPhysicalDirection( | 719 ScrollDirectionPhysical physicalDirection = toPhysicalDirection( |
720 direction, curBox->isHorizontalWritingMode(), curBox->style()->isFli
ppedBlocksWritingMode()); | 720 direction, curBox->isHorizontalWritingMode(), curBox->style()->isFli
ppedBlocksWritingMode()); |
721 | 721 |
722 ScrollResult result = curBox->scroll(granularity, toScrollDelta(physical
Direction, 1)); | 722 ScrollResult result = curBox->scroll(granularity, toScrollDelta(physical
Direction, 1)); |
723 | 723 |
724 if (result.didScroll()) { | 724 if (result.didScroll()) { |
725 setFrameWasScrolledByUser(); | 725 setFrameWasScrolledByUser(); |
726 return true; | 726 return true; |
727 } | 727 } |
728 | 728 |
729 curBox = curBox->containingBlock(); | 729 curBox = curBox->containingBlock(); |
730 } | 730 } |
731 | 731 |
732 return false; | 732 return false; |
733 } | 733 } |
734 | 734 |
735 void EventHandler::customizedScroll(const Node& startNode, ScrollState& scrollSt
ate) | 735 void EventHandler::customizedScroll(const Node& startNode, ScrollState& scrollSt
ate) |
736 { | 736 { |
737 if (scrollState.fullyConsumed()) | 737 if (scrollState.fullyConsumed()) |
738 return; | 738 return; |
739 | 739 |
740 if (scrollState.deltaX() || scrollState.deltaY()) | 740 if (scrollState.deltaX() || scrollState.deltaY()) |
741 m_frame->document()->updateLayoutIgnorePendingStylesheets(); | 741 m_frame->document()->updateStyleAndLayoutIgnorePendingStylesheets(); |
742 | 742 |
743 if (m_currentScrollChain.empty()) | 743 if (m_currentScrollChain.empty()) |
744 recomputeScrollChain(*m_frame, startNode, m_currentScrollChain); | 744 recomputeScrollChain(*m_frame, startNode, m_currentScrollChain); |
745 scrollState.setScrollChain(m_currentScrollChain); | 745 scrollState.setScrollChain(m_currentScrollChain); |
746 | 746 |
747 scrollState.distributeToScrollChainDescendant(); | 747 scrollState.distributeToScrollChainDescendant(); |
748 } | 748 } |
749 | 749 |
750 // TODO(bokan): This should be merged with logicalScroll assuming | 750 // TODO(bokan): This should be merged with logicalScroll assuming |
751 // defaultSpaceEventHandler's chaining scroll can be done crossing frames. | 751 // defaultSpaceEventHandler's chaining scroll can be done crossing frames. |
752 bool EventHandler::bubblingScroll(ScrollDirection direction, ScrollGranularity g
ranularity, Node* startingNode) | 752 bool EventHandler::bubblingScroll(ScrollDirection direction, ScrollGranularity g
ranularity, Node* startingNode) |
753 { | 753 { |
754 // The layout needs to be up to date to determine if we can scroll. We may b
e | 754 // The layout needs to be up to date to determine if we can scroll. We may b
e |
755 // here because of an onLoad event, in which case the final layout hasn't be
en performed yet. | 755 // here because of an onLoad event, in which case the final layout hasn't be
en performed yet. |
756 m_frame->document()->updateLayoutIgnorePendingStylesheets(); | 756 m_frame->document()->updateStyleAndLayoutIgnorePendingStylesheets(); |
757 // FIXME: enable scroll customization in this case. See crbug.com/410974. | 757 // FIXME: enable scroll customization in this case. See crbug.com/410974. |
758 if (logicalScroll(direction, granularity, startingNode)) | 758 if (logicalScroll(direction, granularity, startingNode)) |
759 return true; | 759 return true; |
760 | 760 |
761 Frame* parentFrame = m_frame->tree().parent(); | 761 Frame* parentFrame = m_frame->tree().parent(); |
762 if (!parentFrame || !parentFrame->isLocalFrame()) | 762 if (!parentFrame || !parentFrame->isLocalFrame()) |
763 return false; | 763 return false; |
764 // FIXME: Broken for OOPI. | 764 // FIXME: Broken for OOPI. |
765 return toLocalFrame(parentFrame)->eventHandler().bubblingScroll(direction, g
ranularity, m_frame->deprecatedLocalOwner()); | 765 return toLocalFrame(parentFrame)->eventHandler().bubblingScroll(direction, g
ranularity, m_frame->deprecatedLocalOwner()); |
766 } | 766 } |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
834 return; | 834 return; |
835 | 835 |
836 FrameView* view = m_frame->view(); | 836 FrameView* view = m_frame->view(); |
837 if (!view || !view->shouldSetCursor()) | 837 if (!view || !view->shouldSetCursor()) |
838 return; | 838 return; |
839 | 839 |
840 LayoutViewItem layoutViewItem = view->layoutViewItem(); | 840 LayoutViewItem layoutViewItem = view->layoutViewItem(); |
841 if (layoutViewItem.isNull()) | 841 if (layoutViewItem.isNull()) |
842 return; | 842 return; |
843 | 843 |
844 m_frame->document()->updateLayout(); | 844 m_frame->document()->updateStyleAndLayout(); |
845 | 845 |
846 HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::AllowChild
FrameContent); | 846 HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::AllowChild
FrameContent); |
847 HitTestResult result(request, view->rootFrameToContents(m_lastKnownMousePosi
tion)); | 847 HitTestResult result(request, view->rootFrameToContents(m_lastKnownMousePosi
tion)); |
848 layoutViewItem.hitTest(result); | 848 layoutViewItem.hitTest(result); |
849 | 849 |
850 if (LocalFrame* frame = result.innerNodeFrame()) { | 850 if (LocalFrame* frame = result.innerNodeFrame()) { |
851 OptionalCursor optionalCursor = frame->eventHandler().selectCursor(resul
t); | 851 OptionalCursor optionalCursor = frame->eventHandler().selectCursor(resul
t); |
852 if (optionalCursor.isCursorChange()) { | 852 if (optionalCursor.isCursorChange()) { |
853 view->setCursor(optionalCursor.cursor()); | 853 view->setCursor(optionalCursor.cursor()); |
854 } | 854 } |
(...skipping 924 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1779 | 1779 |
1780 WebInputEventResult EventHandler::handleMouseFocus(const MouseEventWithHitTestRe
sults& targetedEvent, InputDeviceCapabilities* sourceCapabilities) | 1780 WebInputEventResult EventHandler::handleMouseFocus(const MouseEventWithHitTestRe
sults& targetedEvent, InputDeviceCapabilities* sourceCapabilities) |
1781 { | 1781 { |
1782 // If clicking on a frame scrollbar, do not mess up with content focus. | 1782 // If clicking on a frame scrollbar, do not mess up with content focus. |
1783 if (targetedEvent.hitTestResult().scrollbar() && !m_frame->contentLayoutItem
().isNull()) { | 1783 if (targetedEvent.hitTestResult().scrollbar() && !m_frame->contentLayoutItem
().isNull()) { |
1784 if (targetedEvent.hitTestResult().scrollbar()->getScrollableArea() == m_
frame->contentLayoutItem().getScrollableArea()) | 1784 if (targetedEvent.hitTestResult().scrollbar()->getScrollableArea() == m_
frame->contentLayoutItem().getScrollableArea()) |
1785 return WebInputEventResult::NotHandled; | 1785 return WebInputEventResult::NotHandled; |
1786 } | 1786 } |
1787 | 1787 |
1788 // The layout needs to be up to date to determine if an element is focusable
. | 1788 // The layout needs to be up to date to determine if an element is focusable
. |
1789 m_frame->document()->updateLayoutIgnorePendingStylesheets(); | 1789 m_frame->document()->updateStyleAndLayoutIgnorePendingStylesheets(); |
1790 | 1790 |
1791 Element* element = nullptr; | 1791 Element* element = nullptr; |
1792 if (m_nodeUnderMouse) | 1792 if (m_nodeUnderMouse) |
1793 element = m_nodeUnderMouse->isElementNode() ? toElement(m_nodeUnderMouse
) : m_nodeUnderMouse->parentOrShadowHostElement(); | 1793 element = m_nodeUnderMouse->isElementNode() ? toElement(m_nodeUnderMouse
) : m_nodeUnderMouse->parentOrShadowHostElement(); |
1794 for (; element; element = element->parentOrShadowHostElement()) { | 1794 for (; element; element = element->parentOrShadowHostElement()) { |
1795 if (element->isFocusable() && element->isFocusedElementInDocument()) | 1795 if (element->isFocusable() && element->isFocusedElementInDocument()) |
1796 return WebInputEventResult::NotHandled; | 1796 return WebInputEventResult::NotHandled; |
1797 if (element->isMouseFocusable()) | 1797 if (element->isMouseFocusable()) |
1798 break; | 1798 break; |
1799 } | 1799 } |
(...skipping 1907 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3707 | 3707 |
3708 FrameHost* EventHandler::frameHost() const | 3708 FrameHost* EventHandler::frameHost() const |
3709 { | 3709 { |
3710 if (!m_frame->page()) | 3710 if (!m_frame->page()) |
3711 return nullptr; | 3711 return nullptr; |
3712 | 3712 |
3713 return &m_frame->page()->frameHost(); | 3713 return &m_frame->page()->frameHost(); |
3714 } | 3714 } |
3715 | 3715 |
3716 } // namespace blink | 3716 } // namespace blink |
OLD | NEW |