OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights |
3 * reserved. | 3 * reserved. |
4 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 4 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
5 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) | 5 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) |
6 * | 6 * |
7 * Redistribution and use in source and binary forms, with or without | 7 * Redistribution and use in source and binary forms, with or without |
8 * modification, are permitted provided that the following conditions | 8 * modification, are permitted provided that the following conditions |
9 * are met: | 9 * are met: |
10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
(...skipping 1455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1466 // work that cleans the hover state. Because the hover state for the main | 1466 // work that cleans the hover state. Because the hover state for the main |
1467 // frame is updated by calling Document::updateHoverActiveState | 1467 // frame is updated by calling Document::updateHoverActiveState |
1468 while (newHoverFrameInDocument && newHoverFrameInDocument != m_frame) { | 1468 while (newHoverFrameInDocument && newHoverFrameInDocument != m_frame) { |
1469 newHoverFrameChain.push_back(newHoverFrameInDocument); | 1469 newHoverFrameChain.push_back(newHoverFrameInDocument); |
1470 Frame* parentFrame = newHoverFrameInDocument->tree().parent(); | 1470 Frame* parentFrame = newHoverFrameInDocument->tree().parent(); |
1471 newHoverFrameInDocument = parentFrame && parentFrame->isLocalFrame() | 1471 newHoverFrameInDocument = parentFrame && parentFrame->isLocalFrame() |
1472 ? toLocalFrame(parentFrame) | 1472 ? toLocalFrame(parentFrame) |
1473 : nullptr; | 1473 : nullptr; |
1474 } | 1474 } |
1475 | 1475 |
1476 Node* oldHoverNodeInCurDoc = m_frame->document()->hoverNode(); | 1476 Node* oldHoverNodeInCurDoc = m_frame->document()->hoverElement(); |
1477 Node* newInnermostHoverNode = innerElement; | 1477 Node* newInnermostHoverNode = innerElement; |
1478 | 1478 |
1479 if (newInnermostHoverNode != oldHoverNodeInCurDoc) { | 1479 if (newInnermostHoverNode != oldHoverNodeInCurDoc) { |
1480 size_t indexFrameChain = newHoverFrameChain.size(); | 1480 size_t indexFrameChain = newHoverFrameChain.size(); |
1481 | 1481 |
1482 // Clear the hover state on any frames which are no longer in the frame | 1482 // Clear the hover state on any frames which are no longer in the frame |
1483 // chain of the hovered element. | 1483 // chain of the hovered element. |
1484 while (oldHoverNodeInCurDoc && | 1484 while (oldHoverNodeInCurDoc && |
1485 oldHoverNodeInCurDoc->isFrameOwnerElement()) { | 1485 oldHoverNodeInCurDoc->isFrameOwnerElement()) { |
1486 LocalFrame* newHoverFrame = nullptr; | 1486 LocalFrame* newHoverFrame = nullptr; |
1487 // If we can't get the frame from the new hover frame chain, | 1487 // If we can't get the frame from the new hover frame chain, |
1488 // the newHoverFrame will be null and the old hover state will be cleared. | 1488 // the newHoverFrame will be null and the old hover state will be cleared. |
1489 if (indexFrameChain > 0) | 1489 if (indexFrameChain > 0) |
1490 newHoverFrame = newHoverFrameChain[--indexFrameChain]; | 1490 newHoverFrame = newHoverFrameChain[--indexFrameChain]; |
1491 | 1491 |
1492 HTMLFrameOwnerElement* owner = | 1492 HTMLFrameOwnerElement* owner = |
1493 toHTMLFrameOwnerElement(oldHoverNodeInCurDoc); | 1493 toHTMLFrameOwnerElement(oldHoverNodeInCurDoc); |
1494 if (!owner->contentFrame() || !owner->contentFrame()->isLocalFrame()) | 1494 if (!owner->contentFrame() || !owner->contentFrame()->isLocalFrame()) |
1495 break; | 1495 break; |
1496 | 1496 |
1497 LocalFrame* oldHoverFrame = toLocalFrame(owner->contentFrame()); | 1497 LocalFrame* oldHoverFrame = toLocalFrame(owner->contentFrame()); |
1498 Document* doc = oldHoverFrame->document(); | 1498 Document* doc = oldHoverFrame->document(); |
1499 if (!doc) | 1499 if (!doc) |
1500 break; | 1500 break; |
1501 | 1501 |
1502 oldHoverNodeInCurDoc = doc->hoverNode(); | 1502 oldHoverNodeInCurDoc = doc->hoverElement(); |
1503 // If the old hovered frame is different from the new hovered frame. | 1503 // If the old hovered frame is different from the new hovered frame. |
1504 // we should clear the old hovered node from the old hovered frame. | 1504 // we should clear the old hovered node from the old hovered frame. |
1505 if (newHoverFrame != oldHoverFrame) | 1505 if (newHoverFrame != oldHoverFrame) |
1506 doc->updateHoverActiveState(request, nullptr, nullptr); | 1506 doc->updateHoverActiveState(request, nullptr, nullptr); |
1507 } | 1507 } |
1508 } | 1508 } |
1509 | 1509 |
1510 // Recursively set the new active/hover states on every frame in the chain of | 1510 // Recursively set the new active/hover states on every frame in the chain of |
1511 // innerElement. | 1511 // innerElement. |
1512 m_frame->document()->updateHoverActiveState(request, innerElement, nullptr); | 1512 m_frame->document()->updateHoverActiveState(request, innerElement, nullptr); |
(...skipping 573 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2086 MouseEventWithHitTestResults& mev, | 2086 MouseEventWithHitTestResults& mev, |
2087 LocalFrame* subframe) { | 2087 LocalFrame* subframe) { |
2088 WebInputEventResult result = | 2088 WebInputEventResult result = |
2089 subframe->eventHandler().handleMouseReleaseEvent(mev.event()); | 2089 subframe->eventHandler().handleMouseReleaseEvent(mev.event()); |
2090 if (result != WebInputEventResult::NotHandled) | 2090 if (result != WebInputEventResult::NotHandled) |
2091 return result; | 2091 return result; |
2092 return WebInputEventResult::HandledSystem; | 2092 return WebInputEventResult::HandledSystem; |
2093 } | 2093 } |
2094 | 2094 |
2095 } // namespace blink | 2095 } // namespace blink |
OLD | NEW |