bool HTMLAreaElement::mapMouseEvent(int x, int y, const IntSize& size, HitTestResult& result) { if (m_lastSize != size) { m_region.set(new Path(getRegion(size))); m_lastSize = size; } if (!m_region->contains(IntPoint(x, y))) return false; result.setInnerNode(this); result.setURLElement(this); return true; }
bool HTMLAreaElement::mapMouseEvent(LayoutPoint location, const LayoutSize& size, HitTestResult& result) { if (m_lastSize != size) { m_region = adoptPtr(new Path(getRegion(size))); m_lastSize = size; } if (!m_region->contains(location)) return false; result.setInnerNode(this); result.setURLElement(this); return true; }
bool HTMLMapElement::mapMouseEvent(LayoutPoint location, const LayoutSize& size, HitTestResult& result) { HTMLAreaElement* defaultArea = 0; for (HTMLAreaElement& area : Traversal<HTMLAreaElement>::descendantsOf(*this)) { if (area.isDefault()) { if (!defaultArea) defaultArea = &area; } else if (area.mapMouseEvent(location, size, result)) { return true; } } if (defaultArea) { result.setInnerNode(defaultArea); result.setURLElement(defaultArea); } return defaultArea; }
bool HTMLMapElement::mapMouseEvent(LayoutPoint location, const LayoutSize& size, HitTestResult& result) { HTMLAreaElement* defaultArea = 0; for (HTMLAreaElement* area = Traversal<HTMLAreaElement>::firstWithin(*this); area; area = Traversal<HTMLAreaElement>::next(*area, this)) { if (area->isDefault()) { if (!defaultArea) defaultArea = area; } else if (area->mapMouseEvent(location, size, result)) { return true; } } if (defaultArea) { result.setInnerNode(defaultArea); result.setURLElement(defaultArea); } return defaultArea; }
bool HTMLMapElement::mapMouseEvent(LayoutPoint location, const LayoutSize& size, HitTestResult& result) { HTMLAreaElement* defaultArea = 0; auto areaDescendants = descendantsOfType<HTMLAreaElement>(*this); for (auto area = areaDescendants.begin(), end = areaDescendants.end(); area != end; ++area) { if (area->isDefault()) { if (!defaultArea) defaultArea = &*area; } else if (area->mapMouseEvent(location, size, result)) return true; } if (defaultArea) { result.setInnerNode(defaultArea); result.setURLElement(defaultArea); } return defaultArea; }
bool HTMLMapElement::mapMouseEvent(int x, int y, const IntSize& size, HitTestResult& result) { HTMLAreaElement* defaultArea = 0; Node *node = this; while ((node = node->traverseNextNode(this))) { if (node->hasTagName(areaTag)) { HTMLAreaElement* areaElt = static_cast<HTMLAreaElement*>(node); if (areaElt->isDefault()) { if (!defaultArea) defaultArea = areaElt; } else if (areaElt->mapMouseEvent(x, y, size, result)) return true; } } if (defaultArea) { result.setInnerNode(defaultArea); result.setURLElement(defaultArea); } return defaultArea; }
bool HTMLMapElement::mapMouseEvent(LayoutPoint location, const LayoutSize& size, HitTestResult& result) { HTMLAreaElement* defaultArea = 0; Element* element = this; while ((element = ElementTraversal::next(element, this))) { if (element->hasTagName(areaTag)) { HTMLAreaElement* areaElt = static_cast<HTMLAreaElement*>(element); if (areaElt->isDefault()) { if (!defaultArea) defaultArea = areaElt; } else if (areaElt->mapMouseEvent(location, size, result)) return true; } } if (defaultArea) { result.setInnerNode(defaultArea); result.setURLElement(defaultArea); } return defaultArea; }