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

Side by Side Diff: third_party/WebKit/WebCore/page/EventHandler.cpp

Issue 21165: Revert the merge. Mac build is mysteriously broken. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 10 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) 3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org)
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 1327 matching lines...) Expand 10 before | Expand all | Expand 10 after
1338 { 1338 {
1339 IntPoint contentsPos = m_frame->view()->windowToContents(event.pos()); 1339 IntPoint contentsPos = m_frame->view()->windowToContents(event.pos());
1340 1340
1341 RefPtr<MouseEvent> me = MouseEvent::create(eventType, 1341 RefPtr<MouseEvent> me = MouseEvent::create(eventType,
1342 true, true, m_frame->document()->defaultView(), 1342 true, true, m_frame->document()->defaultView(),
1343 0, event.globalX(), event.globalY(), contentsPos.x(), contentsPos.y(), 1343 0, event.globalX(), event.globalY(), contentsPos.x(), contentsPos.y(),
1344 event.ctrlKey(), event.altKey(), event.shiftKey(), event.metaKey(), 1344 event.ctrlKey(), event.altKey(), event.shiftKey(), event.metaKey(),
1345 0, 0, clipboard); 1345 0, 0, clipboard);
1346 1346
1347 ExceptionCode ec = 0; 1347 ExceptionCode ec = 0;
1348 dragTarget->dispatchEvent(me.get(), ec); 1348 EventTargetNodeCast(dragTarget)->dispatchEvent(me.get(), ec);
1349 return me->defaultPrevented(); 1349 return me->defaultPrevented();
1350 } 1350 }
1351 1351
1352 bool EventHandler::updateDragAndDrop(const PlatformMouseEvent& event, Clipboard* clipboard) 1352 bool EventHandler::updateDragAndDrop(const PlatformMouseEvent& event, Clipboard* clipboard)
1353 { 1353 {
1354 bool accept = false; 1354 bool accept = false;
1355 1355
1356 if (!m_frame->document()) 1356 if (!m_frame->document())
1357 return false; 1357 return false;
1358 1358
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
1525 m_lastNodeUnderMouse = 0; 1525 m_lastNodeUnderMouse = 0;
1526 m_lastScrollbarUnderMouse = 0; 1526 m_lastScrollbarUnderMouse = 0;
1527 #if ENABLE(SVG) 1527 #if ENABLE(SVG)
1528 m_lastInstanceUnderMouse = 0; 1528 m_lastInstanceUnderMouse = 0;
1529 #endif 1529 #endif
1530 } 1530 }
1531 1531
1532 if (m_lastNodeUnderMouse != m_nodeUnderMouse) { 1532 if (m_lastNodeUnderMouse != m_nodeUnderMouse) {
1533 // send mouseout event to the old node 1533 // send mouseout event to the old node
1534 if (m_lastNodeUnderMouse) 1534 if (m_lastNodeUnderMouse)
1535 m_lastNodeUnderMouse->dispatchMouseEvent(mouseEvent, eventNames( ).mouseoutEvent, 0, m_nodeUnderMouse.get()); 1535 EventTargetNodeCast(m_lastNodeUnderMouse.get())->dispatchMouseEv ent(mouseEvent, eventNames().mouseoutEvent, 0, m_nodeUnderMouse.get());
1536 // send mouseover event to the new node 1536 // send mouseover event to the new node
1537 if (m_nodeUnderMouse) 1537 if (m_nodeUnderMouse)
1538 m_nodeUnderMouse->dispatchMouseEvent(mouseEvent, eventNames().mo useoverEvent, 0, m_lastNodeUnderMouse.get()); 1538 EventTargetNodeCast(m_nodeUnderMouse.get())->dispatchMouseEvent( mouseEvent, eventNames().mouseoverEvent, 0, m_lastNodeUnderMouse.get());
1539 } 1539 }
1540 m_lastNodeUnderMouse = m_nodeUnderMouse; 1540 m_lastNodeUnderMouse = m_nodeUnderMouse;
1541 #if ENABLE(SVG) 1541 #if ENABLE(SVG)
1542 m_lastInstanceUnderMouse = instanceAssociatedWithShadowTreeElement(m_nod eUnderMouse.get()); 1542 m_lastInstanceUnderMouse = instanceAssociatedWithShadowTreeElement(m_nod eUnderMouse.get());
1543 #endif 1543 #endif
1544 } 1544 }
1545 } 1545 }
1546 1546
1547 bool EventHandler::dispatchMouseEvent(const AtomicString& eventType, Node* targe tNode, bool /*cancelable*/, int clickCount, const PlatformMouseEvent& mouseEvent , bool setUnder) 1547 bool EventHandler::dispatchMouseEvent(const AtomicString& eventType, Node* targe tNode, bool /*cancelable*/, int clickCount, const PlatformMouseEvent& mouseEvent , bool setUnder)
1548 { 1548 {
1549 updateMouseEventTargetNode(targetNode, mouseEvent, setUnder); 1549 updateMouseEventTargetNode(targetNode, mouseEvent, setUnder);
1550 1550
1551 bool swallowEvent = false; 1551 bool swallowEvent = false;
1552 1552
1553 if (m_nodeUnderMouse) 1553 if (m_nodeUnderMouse)
1554 swallowEvent = m_nodeUnderMouse->dispatchMouseEvent(mouseEvent, eventTyp e, clickCount); 1554 swallowEvent = EventTargetNodeCast(m_nodeUnderMouse.get())->dispatchMous eEvent(mouseEvent, eventType, clickCount);
1555 1555
1556 if (!swallowEvent && eventType == eventNames().mousedownEvent) { 1556 if (!swallowEvent && eventType == eventNames().mousedownEvent) {
1557 // Blur current focus node when a link/button is clicked; this 1557 // Blur current focus node when a link/button is clicked; this
1558 // is expected by some sites that rely on onChange handlers running 1558 // is expected by some sites that rely on onChange handlers running
1559 // from form fields before the button click is processed. 1559 // from form fields before the button click is processed.
1560 Node* node = m_nodeUnderMouse.get(); 1560 Node* node = m_nodeUnderMouse.get();
1561 RenderObject* renderer = node ? node->renderer() : 0; 1561 RenderObject* renderer = node ? node->renderer() : 0;
1562 1562
1563 // Walk up the render tree to search for a node to focus. 1563 // Walk up the render tree to search for a node to focus.
1564 // Walking up the DOM tree wouldn't work for shadow trees, like those be hind the engine-based text fields. 1564 // Walking up the DOM tree wouldn't work for shadow trees, like those be hind the engine-based text fields.
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1621 if (result.isOverWidget() && target && target->isWidget()) { 1621 if (result.isOverWidget() && target && target->isWidget()) {
1622 Widget* widget = static_cast<RenderWidget*>(target)->widget(); 1622 Widget* widget = static_cast<RenderWidget*>(target)->widget();
1623 1623
1624 if (widget && passWheelEventToWidget(e, widget)) { 1624 if (widget && passWheelEventToWidget(e, widget)) {
1625 e.accept(); 1625 e.accept();
1626 return true; 1626 return true;
1627 } 1627 }
1628 } 1628 }
1629 1629
1630 node = node->shadowAncestorNode(); 1630 node = node->shadowAncestorNode();
1631 node->dispatchWheelEvent(e); 1631 EventTargetNodeCast(node)->dispatchWheelEvent(e);
1632 if (e.isAccepted()) 1632 if (e.isAccepted())
1633 return true; 1633 return true;
1634 1634
1635 if (node->renderer()) { 1635 if (node->renderer()) {
1636 // Just break up into two scrolls if we need to. Diagonal movement on 1636 // Just break up into two scrolls if we need to. Diagonal movement on
1637 // a MacBook pro is an example of a 2-dimensional mouse wheel event (where both deltaX and deltaY can be set). 1637 // a MacBook pro is an example of a 2-dimensional mouse wheel event (where both deltaX and deltaY can be set).
1638 scrollAndAcceptEvent(e.deltaX(), ScrollLeft, ScrollRight, e, node); 1638 scrollAndAcceptEvent(e.deltaX(), ScrollLeft, ScrollRight, e, node);
1639 scrollAndAcceptEvent(e.deltaY(), ScrollUp, ScrollDown, e, node); 1639 scrollAndAcceptEvent(e.deltaY(), ScrollUp, ScrollDown, e, node);
1640 } 1640 }
1641 } 1641 }
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1686 // Whether or not a mouse down can begin the creation of a selection. Fires the selectStart event. 1686 // Whether or not a mouse down can begin the creation of a selection. Fires the selectStart event.
1687 bool EventHandler::canMouseDownStartSelect(Node* node) 1687 bool EventHandler::canMouseDownStartSelect(Node* node)
1688 { 1688 {
1689 if (!node || !node->renderer()) 1689 if (!node || !node->renderer())
1690 return true; 1690 return true;
1691 1691
1692 // Some controls and images can't start a select on a mouse down. 1692 // Some controls and images can't start a select on a mouse down.
1693 if (!node->canStartSelection()) 1693 if (!node->canStartSelection())
1694 return false; 1694 return false;
1695 1695
1696 for (RenderObject* curr = node->renderer(); curr; curr = curr->parent()) { 1696 for (RenderObject* curr = node->renderer(); curr; curr = curr->parent())
1697 if (Node* node = curr->element()) 1697 if (Node* node = curr->element())
1698 return node->dispatchEventForType(eventNames().selectstartEvent, tru e, true); 1698 return EventTargetNodeCast(node)->dispatchEventForType(eventNames(). selectstartEvent, true, true);
1699 } 1699
1700
1701 return true; 1700 return true;
1702 } 1701 }
1703 1702
1704 bool EventHandler::canMouseDragExtendSelect(Node* node) 1703 bool EventHandler::canMouseDragExtendSelect(Node* node)
1705 { 1704 {
1706 if (!node || !node->renderer()) 1705 if (!node || !node->renderer())
1707 return true; 1706 return true;
1708 1707
1709 for (RenderObject* curr = node->renderer(); curr; curr = curr->parent()) { 1708 for (RenderObject* curr = node->renderer(); curr; curr = curr->parent())
1710 if (Node* node = curr->element()) 1709 if (Node* node = curr->element())
1711 return node->dispatchEventForType(eventNames().selectstartEvent, tru e, true); 1710 return EventTargetNodeCast(node)->dispatchEventForType(eventNames(). selectstartEvent, true, true);
1712 } 1711
1713
1714 return true; 1712 return true;
1715 } 1713 }
1716 1714
1717 void EventHandler::setResizingFrameSet(HTMLFrameSetElement* frameSet) 1715 void EventHandler::setResizingFrameSet(HTMLFrameSetElement* frameSet)
1718 { 1716 {
1719 m_frameSetBeingResized = frameSet; 1717 m_frameSetBeingResized = frameSet;
1720 } 1718 }
1721 1719
1722 void EventHandler::resizeLayerDestroyed() 1720 void EventHandler::resizeLayerDestroyed()
1723 { 1721 {
1724 ASSERT(m_resizeLayer); 1722 ASSERT(m_resizeLayer);
1725 m_resizeLayer = 0; 1723 m_resizeLayer = 0;
1726 } 1724 }
1727 1725
1728 void EventHandler::hoverTimerFired(Timer<EventHandler>*) 1726 void EventHandler::hoverTimerFired(Timer<EventHandler>*)
1729 { 1727 {
1730 m_hoverTimer.stop(); 1728 m_hoverTimer.stop();
1731 1729
1732 ASSERT(m_frame); 1730 ASSERT(m_frame);
1733 ASSERT(m_frame->document()); 1731 ASSERT(m_frame->document());
1734 1732
1735 if (RenderView* renderer = m_frame->contentRenderer()) { 1733 if (RenderView* renderer = m_frame->contentRenderer()) {
1736 HitTestRequest request(HitTestRequest::MouseMove); 1734 HitTestRequest request(HitTestRequest::MouseMove);
1737 HitTestResult result(m_frame->view()->windowToContents(m_currentMousePos ition)); 1735 HitTestResult result(m_frame->view()->windowToContents(m_currentMousePos ition));
1738 renderer->layer()->hitTest(request, result); 1736 renderer->layer()->hitTest(request, result);
1739 m_frame->document()->updateRendering(); 1737 m_frame->document()->updateRendering();
1740 } 1738 }
1741 } 1739 }
1742 1740
1743 static Node* eventTargetNodeForDocument(Document* doc) 1741 static EventTargetNode* eventTargetNodeForDocument(Document* doc)
1744 { 1742 {
1745 if (!doc) 1743 if (!doc)
1746 return 0; 1744 return 0;
1747 Node* node = doc->focusedNode(); 1745 Node* node = doc->focusedNode();
1748 if (!node) { 1746 if (!node) {
1749 if (doc->isHTMLDocument()) 1747 if (doc->isHTMLDocument())
1750 node = doc->body(); 1748 node = doc->body();
1751 else 1749 else
1752 node = doc->documentElement(); 1750 node = doc->documentElement();
1753 if (!node) 1751 if (!node)
1754 return 0; 1752 return 0;
1755 } 1753 }
1756 return node; 1754 return EventTargetNodeCast(node);
1757 } 1755 }
1758 1756
1759 bool EventHandler::handleAccessKey(const PlatformKeyboardEvent& evt) 1757 bool EventHandler::handleAccessKey(const PlatformKeyboardEvent& evt)
1760 { 1758 {
1761 // FIXME: Ignoring the state of Shift key is what neither IE nor Firefox do. 1759 // FIXME: Ignoring the state of Shift key is what neither IE nor Firefox do.
1762 // IE matches lower and upper case access keys regardless of Shift key state - but if both upper and 1760 // IE matches lower and upper case access keys regardless of Shift key state - but if both upper and
1763 // lower case variants are present in a document, the correct element is mat ched based on Shift key state. 1761 // lower case variants are present in a document, the correct element is mat ched based on Shift key state.
1764 // Firefox only matches an access key if Shift is not pressed, and does that case-insensitively. 1762 // Firefox only matches an access key if Shift is not pressed, and does that case-insensitively.
1765 ASSERT(!(accessKeyModifiers() & PlatformKeyboardEvent::ShiftKey)); 1763 ASSERT(!(accessKeyModifiers() & PlatformKeyboardEvent::ShiftKey));
1766 if ((evt.modifiers() & ~PlatformKeyboardEvent::ShiftKey) != accessKeyModifie rs()) 1764 if ((evt.modifiers() & ~PlatformKeyboardEvent::ShiftKey) != accessKeyModifie rs())
(...skipping 22 matching lines...) Expand all
1789 if (initialKeyEvent.keyIdentifier() == escKeyId && initialKeyEvent.type( ) == PlatformKeyboardEvent::KeyUp) 1787 if (initialKeyEvent.keyIdentifier() == escKeyId && initialKeyEvent.type( ) == PlatformKeyboardEvent::KeyUp)
1790 stopAutoscrollTimer(); 1788 stopAutoscrollTimer();
1791 1789
1792 // If we were in autoscroll/panscroll mode, we swallow the key event 1790 // If we were in autoscroll/panscroll mode, we swallow the key event
1793 return true; 1791 return true;
1794 } 1792 }
1795 #endif 1793 #endif
1796 1794
1797 // Check for cases where we are too early for events -- possible unmatched k ey up 1795 // Check for cases where we are too early for events -- possible unmatched k ey up
1798 // from pressing return in the location bar. 1796 // from pressing return in the location bar.
1799 RefPtr<Node> node = eventTargetNodeForDocument(m_frame->document()); 1797 RefPtr<EventTargetNode> node = eventTargetNodeForDocument(m_frame->document( ));
1800 if (!node) 1798 if (!node)
1801 return false; 1799 return false;
1802 1800
1803 // FIXME: what is this doing here, in keyboard event handler? 1801 // FIXME: what is this doing here, in keyboard event handler?
1804 m_frame->loader()->resetMultipleFormSubmissionProtection(); 1802 m_frame->loader()->resetMultipleFormSubmissionProtection();
1805 1803
1806 // In IE, access keys are special, they are handled after default keydown pr ocessing, but cannot be canceled - this is hard to match. 1804 // In IE, access keys are special, they are handled after default keydown pr ocessing, but cannot be canceled - this is hard to match.
1807 // On Mac OS X, we process them before dispatching keydown, as the default k eydown handler implements Emacs key bindings, which may conflict 1805 // On Mac OS X, we process them before dispatching keydown, as the default k eydown handler implements Emacs key bindings, which may conflict
1808 // with access keys. Then we dispatch keydown, but suppress its default hand ling. 1806 // with access keys. Then we dispatch keydown, but suppress its default hand ling.
1809 // On Windows, WebKit explicitly calls handleAccessKey() instead of dispatch ing a keypress event for WM_SYSCHAR messages. 1807 // On Windows, WebKit explicitly calls handleAccessKey() instead of dispatch ing a keypress event for WM_SYSCHAR messages.
(...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after
2314 } 2312 }
2315 2313
2316 bool EventHandler::passMousePressEventToScrollbar(MouseEventWithHitTestResults& mev, Scrollbar* scrollbar) 2314 bool EventHandler::passMousePressEventToScrollbar(MouseEventWithHitTestResults& mev, Scrollbar* scrollbar)
2317 { 2315 {
2318 if (!scrollbar || !scrollbar->enabled()) 2316 if (!scrollbar || !scrollbar->enabled())
2319 return false; 2317 return false;
2320 return scrollbar->mouseDown(mev.event()); 2318 return scrollbar->mouseDown(mev.event());
2321 } 2319 }
2322 2320
2323 } 2321 }
OLDNEW
« no previous file with comments | « third_party/WebKit/WebCore/page/EventHandler.h ('k') | third_party/WebKit/WebCore/page/FrameView.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698