Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
| 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
| 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All r ights reserved. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All r ights reserved. |
| 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) | 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) |
| 8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. | 8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. |
| 9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) | 9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) |
| 10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. | 10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. |
| (...skipping 5423 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5434 m_frame->eventHandler().notifyElementActivated(); | 5434 m_frame->eventHandler().notifyElementActivated(); |
| 5435 | 5435 |
| 5436 Element* innerElementInDocument = innerElement; | 5436 Element* innerElementInDocument = innerElement; |
| 5437 while (innerElementInDocument && innerElementInDocument->document() != this) { | 5437 while (innerElementInDocument && innerElementInDocument->document() != this) { |
| 5438 innerElementInDocument->document().updateHoverActiveState(request, inner ElementInDocument, event); | 5438 innerElementInDocument->document().updateHoverActiveState(request, inner ElementInDocument, event); |
| 5439 innerElementInDocument = innerElementInDocument->document().ownerElement (); | 5439 innerElementInDocument = innerElementInDocument->document().ownerElement (); |
| 5440 } | 5440 } |
| 5441 | 5441 |
| 5442 Element* oldActiveElement = activeHoverElement(); | 5442 Element* oldActiveElement = activeHoverElement(); |
| 5443 if (oldActiveElement && !request.active()) { | 5443 if (oldActiveElement && !request.active()) { |
| 5444 // We are clearing the :active chain because the mouse has been released . | 5444 // The oldActiveElement renderer is null, dropped on :active by setting display: none, |
| 5445 for (RenderObject* curr = oldActiveElement->renderer(); curr; curr = cur r->parent()) { | 5445 // for instance. We still need to clear the ActiveChain as the mouse is released. |
| 5446 if (curr->node()) { | 5446 for (Node* node = oldActiveElement; node; node = NodeRenderingTraversal: :parent(node)) { |
| 5447 ASSERT(!curr->node()->isTextNode()); | 5447 ASSERT(node->isTextNode()); |
|
spartha
2014/06/26 19:01:36
@morrita, the assert was added in one of your patc
| |
| 5448 curr->node()->setActive(false); | 5448 node->setActive(false); |
| 5449 m_userActionElements.setInActiveChain(curr->node(), false); | 5449 m_userActionElements.setInActiveChain(node, false); |
| 5450 } | |
| 5451 } | 5450 } |
| 5452 setActiveHoverElement(nullptr); | 5451 setActiveHoverElement(nullptr); |
| 5453 } else { | 5452 } else { |
| 5454 Element* newActiveElement = innerElementInDocument; | 5453 Element* newActiveElement = innerElementInDocument; |
| 5455 if (!oldActiveElement && newActiveElement && !newActiveElement->isDisabl edFormControl() && request.active() && !request.touchMove()) { | 5454 if (!oldActiveElement && newActiveElement && !newActiveElement->isDisabl edFormControl() && request.active() && !request.touchMove()) { |
| 5456 // We are setting the :active chain and freezing it. If future moves happen, they | 5455 // We are setting the :active chain and freezing it. If future moves happen, they |
| 5457 // will need to reference this chain. | 5456 // will need to reference this chain. |
| 5458 for (RenderObject* curr = newActiveElement->renderer(); curr; curr = curr->parent()) { | 5457 for (Node* node = newActiveElement; node; node = NodeRenderingTraver sal::parent(node)) { |
| 5459 if (curr->node() && !curr->isText()) | 5458 if (!node->isTextNode()) |
| 5460 m_userActionElements.setInActiveChain(curr->node(), true); | 5459 m_userActionElements.setInActiveChain(node, true); |
| 5461 } | 5460 } |
| 5462 | |
| 5463 setActiveHoverElement(newActiveElement); | 5461 setActiveHoverElement(newActiveElement); |
| 5464 } | 5462 } |
| 5465 } | 5463 } |
| 5466 // If the mouse has just been pressed, set :active on the chain. Those (and only those) | 5464 // If the mouse has just been pressed, set :active on the chain. Those (and only those) |
| 5467 // nodes should remain :active until the mouse is released. | 5465 // nodes should remain :active until the mouse is released. |
| 5468 bool allowActiveChanges = !oldActiveElement && activeHoverElement(); | 5466 bool allowActiveChanges = !oldActiveElement && activeHoverElement(); |
| 5469 | 5467 |
| 5470 // If the mouse is down and if this is a mouse move event, we want to restri ct changes in | 5468 // If the mouse is down and if this is a mouse move event, we want to restri ct changes in |
| 5471 // :hover/:active to only apply to elements that are in the :active chain th at we froze | 5469 // :hover/:active to only apply to elements that are in the :active chain th at we froze |
| 5472 // at the time the mouse went down. | 5470 // at the time the mouse went down. |
| (...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5835 visitor->trace(m_compositorPendingAnimations); | 5833 visitor->trace(m_compositorPendingAnimations); |
| 5836 visitor->trace(m_contextDocument); | 5834 visitor->trace(m_contextDocument); |
| 5837 visitor->registerWeakMembers<Document, &Document::clearWeakMembers>(this); | 5835 visitor->registerWeakMembers<Document, &Document::clearWeakMembers>(this); |
| 5838 DocumentSupplementable::trace(visitor); | 5836 DocumentSupplementable::trace(visitor); |
| 5839 TreeScope::trace(visitor); | 5837 TreeScope::trace(visitor); |
| 5840 ContainerNode::trace(visitor); | 5838 ContainerNode::trace(visitor); |
| 5841 ExecutionContext::trace(visitor); | 5839 ExecutionContext::trace(visitor); |
| 5842 } | 5840 } |
| 5843 | 5841 |
| 5844 } // namespace WebCore | 5842 } // namespace WebCore |
| OLD | NEW |