AccessibilityObjectAtk.cpp [plain text]
#include "config.h"
#include "AccessibilityObject.h"
#include "RenderObject.h"
#include "RenderText.h"
#include <glib-object.h>
#if HAVE(ACCESSIBILITY)
namespace WebCore {
bool AccessibilityObject::accessibilityIgnoreAttachment() const
{
return false;
}
AccessibilityObjectInclusion AccessibilityObject::accessibilityPlatformIncludesObject() const
{
AccessibilityObject* parent = parentObject();
if (!parent)
return DefaultBehavior;
AccessibilityRole role = roleValue();
if (role == SplitterRole)
return IncludeObject;
if (role == SliderThumbRole)
return IgnoreObject;
if (isGroup() && parent->isList())
return IncludeObject;
if (parent->isPasswordField() || parent->isTextControl())
return IgnoreObject;
if (role == CellRole || role == TableRole)
return IncludeObject;
if (role == RowRole)
return IgnoreObject;
if (role == StaticTextRole)
return IgnoreObject;
if (role == ListItemRole)
return IncludeObject;
if (role == ListMarkerRole)
return IgnoreObject;
return DefaultBehavior;
}
AccessibilityObjectWrapper* AccessibilityObject::wrapper() const
{
return m_wrapper;
}
void AccessibilityObject::setWrapper(AccessibilityObjectWrapper* wrapper)
{
if (wrapper == m_wrapper)
return;
if (m_wrapper)
g_object_unref(m_wrapper);
m_wrapper = wrapper;
if (m_wrapper)
g_object_ref(m_wrapper);
}
bool AccessibilityObject::allowsTextRanges() const
{
if (isTextControl() || isWebArea() || isGroup() || isLink() || isHeading() || isListItem())
return true;
AccessibilityRole role = roleValue();
return role == ParagraphRole || role == LabelRole || role == DivRole || role == FormRole;
}
unsigned AccessibilityObject::getLengthForTextRange() const
{
unsigned textLength = text().length();
if (textLength)
return textLength;
Node* node = this->node();
RenderObject* renderer = node ? node->renderer() : 0;
if (renderer && renderer->isText()) {
RenderText* renderText = toRenderText(renderer);
textLength = renderText ? renderText->textLength() : 0;
}
if (!textLength && allowsTextRanges())
textLength = textUnderElement().length();
return textLength;
}
}
#endif // HAVE(ACCESSIBILITY)