int Element::offsetHeight() { document().updateLayout(); if (RenderBoxModelObject* renderer = renderBoxModelObject()) return renderer->pixelSnappedOffsetHeight(); return 0; }
int Element::offsetLeft() { document().updateLayout(); if (RenderBoxModelObject* renderer = renderBoxModelObject()) return renderer->offsetLeft(); return 0; }
PassRefPtr<ClientRect> Element::getBoundingClientRect() { document().updateLayout(); Vector<FloatQuad> quads; // Get the bounding rectangle from the box model. if (renderBoxModelObject()) renderBoxModelObject()->absoluteQuads(quads); if (quads.isEmpty()) return ClientRect::create(); FloatRect result = quads[0].boundingBox(); for (size_t i = 1; i < quads.size(); ++i) result.unite(quads[i].boundingBox()); return ClientRect::create(result); }
bool HTMLAnchorElement::isKeyboardFocusable(KeyboardEvent* event) const { if (!isLink()) return HTMLElement::isKeyboardFocusable(event); if (!isFocusable()) return false; if (!document().frame()) return false; if (!document().frame()->eventHandler().tabsToLinks(event)) return false; if (!renderer() && ancestorsOfType<HTMLCanvasElement>(*this).first()) return true; return hasNonEmptyBox(renderBoxModelObject()); }
bool HTMLAnchorElement::isKeyboardFocusable(KeyboardEvent* event) const { if (!isLink()) return HTMLElement::isKeyboardFocusable(event); if (!isFocusable()) return false; if (!document()->frame()) return false; if (!document()->frame()->eventHandler()->tabsToLinks(event)) return false; if (isInCanvasSubtree()) return true; return hasNonEmptyBox(renderBoxModelObject()); }