HTMLFieldSetElement.cpp [plain text]
#include "config.h"
#include "HTMLFieldSetElement.h"
#include "HTMLLegendElement.h"
#include "HTMLNames.h"
#include "RenderFieldset.h"
#include <wtf/StdLibExtras.h>
namespace WebCore {
using namespace HTMLNames;
inline HTMLFieldSetElement::HTMLFieldSetElement(const QualifiedName& tagName, Document* document, HTMLFormElement* form)
: HTMLFormControlElement(tagName, document, form)
{
ASSERT(hasTagName(fieldsetTag));
}
PassRefPtr<HTMLFieldSetElement> HTMLFieldSetElement::create(const QualifiedName& tagName, Document* document, HTMLFormElement* form)
{
return adoptRef(new HTMLFieldSetElement(tagName, document, form));
}
void HTMLFieldSetElement::disabledAttributeChanged()
{
HTMLFormControlElement::disabledAttributeChanged();
for (Node* currentNode = this; currentNode; currentNode = currentNode->traverseNextNode(this)) {
if (currentNode && currentNode->isElementNode() && toElement(currentNode)->isFormControlElement())
static_cast<HTMLFormControlElement*>(currentNode)->setNeedsStyleRecalc();
}
}
bool HTMLFieldSetElement::supportsFocus() const
{
return HTMLElement::supportsFocus();
}
const AtomicString& HTMLFieldSetElement::formControlType() const
{
DEFINE_STATIC_LOCAL(const AtomicString, fieldset, ("fieldset"));
return fieldset;
}
RenderObject* HTMLFieldSetElement::createRenderer(RenderArena* arena, RenderStyle*)
{
return new (arena) RenderFieldset(this);
}
HTMLLegendElement* HTMLFieldSetElement::legend() const
{
for (Element* node = firstElementChild(); node; node = node->nextElementSibling()) {
if (node->hasTagName(legendTag))
return static_cast<HTMLLegendElement*>(node);
}
return 0;
}
}