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