diff options
Diffstat (limited to 'WebCore/html/HTMLOptGroupElement.cpp')
-rw-r--r-- | WebCore/html/HTMLOptGroupElement.cpp | 189 |
1 files changed, 0 insertions, 189 deletions
diff --git a/WebCore/html/HTMLOptGroupElement.cpp b/WebCore/html/HTMLOptGroupElement.cpp deleted file mode 100644 index 0465fb4..0000000 --- a/WebCore/html/HTMLOptGroupElement.cpp +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright (C) 1999 Lars Knoll (knoll@kde.org) - * (C) 1999 Antti Koivisto (koivisto@kde.org) - * (C) 2001 Dirk Mueller (mueller@kde.org) - * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. - * (C) 2006 Alexey Proskuryakov (ap@nypop.com) - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - */ - -#include "config.h" -#include "HTMLOptGroupElement.h" - -#include "CSSStyleSelector.h" -#include "Document.h" -#include "HTMLNames.h" -#include "HTMLSelectElement.h" -#include "RenderMenuList.h" -#include "NodeRenderStyle.h" - -namespace WebCore { - -using namespace HTMLNames; - -HTMLOptGroupElement::HTMLOptGroupElement(Document* doc, HTMLFormElement* f) - : HTMLFormControlElement(optgroupTag, doc, f) - , m_style(0) -{ -} - -bool HTMLOptGroupElement::isFocusable() const -{ - return HTMLElement::isFocusable(); -} - -const AtomicString& HTMLOptGroupElement::type() const -{ - static const AtomicString optgroup("optgroup"); - return optgroup; -} - -bool HTMLOptGroupElement::insertBefore(PassRefPtr<Node> newChild, Node* refChild, ExceptionCode& ec, bool shouldLazyAttach) -{ - bool result = HTMLFormControlElement::insertBefore(newChild, refChild, ec, shouldLazyAttach); - if (result) - recalcSelectOptions(); - return result; -} - -bool HTMLOptGroupElement::replaceChild(PassRefPtr<Node> newChild, Node* oldChild, ExceptionCode& ec, bool shouldLazyAttach) -{ - bool result = HTMLFormControlElement::replaceChild(newChild, oldChild, ec, shouldLazyAttach); - if (result) - recalcSelectOptions(); - return result; -} - -bool HTMLOptGroupElement::removeChild(Node* oldChild, ExceptionCode& ec) -{ - bool result = HTMLFormControlElement::removeChild(oldChild, ec); - if (result) - recalcSelectOptions(); - return result; -} - -bool HTMLOptGroupElement::appendChild(PassRefPtr<Node> newChild, ExceptionCode& ec, bool shouldLazyAttach) -{ - bool result = HTMLFormControlElement::appendChild(newChild, ec, shouldLazyAttach); - if (result) - recalcSelectOptions(); - return result; -} - -bool HTMLOptGroupElement::removeChildren() -{ - bool result = HTMLFormControlElement::removeChildren(); - if (result) - recalcSelectOptions(); - return result; -} - -void HTMLOptGroupElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta) -{ - recalcSelectOptions(); - HTMLFormControlElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); -} - -void HTMLOptGroupElement::parseMappedAttribute(MappedAttribute* attr) -{ - HTMLFormControlElement::parseMappedAttribute(attr); - recalcSelectOptions(); -} - -void HTMLOptGroupElement::recalcSelectOptions() -{ - Node* select = parentNode(); - while (select && !select->hasTagName(selectTag)) - select = select->parentNode(); - if (select) - static_cast<HTMLSelectElement*>(select)->setRecalcListItems(); -} - -String HTMLOptGroupElement::label() const -{ - return getAttribute(labelAttr); -} - -void HTMLOptGroupElement::setLabel(const String &value) -{ - setAttribute(labelAttr, value); -} - -bool HTMLOptGroupElement::checkDTD(const Node* newChild) -{ - // Make sure to keep this in sync with <select> (other than not allowing an optgroup). - return newChild->isTextNode() || newChild->hasTagName(HTMLNames::optionTag) || newChild->hasTagName(HTMLNames::hrTag) || newChild->hasTagName(HTMLNames::scriptTag); -} - -void HTMLOptGroupElement::attach() -{ - if (parentNode()->renderStyle()) - setRenderStyle(styleForRenderer()); - HTMLFormControlElement::attach(); -} - -void HTMLOptGroupElement::detach() -{ - m_style.clear(); - HTMLFormControlElement::detach(); -} - -void HTMLOptGroupElement::setRenderStyle(PassRefPtr<RenderStyle> newStyle) -{ - m_style = newStyle; -} - -RenderStyle* HTMLOptGroupElement::nonRendererRenderStyle() const -{ - return m_style.get(); -} - -String HTMLOptGroupElement::groupLabelText() const -{ - String itemText = getAttribute(labelAttr); - - itemText.replace('\\', document()->backslashAsCurrencySymbol()); - // In WinIE, leading and trailing whitespace is ignored in options and optgroups. We match this behavior. - itemText = itemText.stripWhiteSpace(); - // We want to collapse our whitespace too. This will match other browsers. - itemText = itemText.simplifyWhiteSpace(); - - return itemText; -} - -HTMLSelectElement* HTMLOptGroupElement::ownerSelectElement() const -{ - Node* select = parentNode(); - while (select && !select->hasTagName(selectTag)) - select = select->parentNode(); - - if (!select) - return 0; - - return static_cast<HTMLSelectElement*>(select); -} - -void HTMLOptGroupElement::accessKeyAction(bool sendToAnyElement) -{ - HTMLSelectElement* select = ownerSelectElement(); - // send to the parent to bring focus to the list box - if (select && !select->focused()) - select->accessKeyAction(false); -} - -} // namespace |