RenderTableCol.cpp [plain text]
#include "config.h"
#include "RenderTableCol.h"
#include "CachedImage.h"
#include "HTMLNames.h"
#include "HTMLTableColElement.h"
#include "TextStream.h"
namespace WebCore {
using namespace HTMLNames;
RenderTableCol::RenderTableCol(Node* node)
: RenderContainer(node), m_span(1)
{
setInline(true); updateFromElement();
}
void RenderTableCol::updateFromElement()
{
int oldSpan = m_span;
Node* node = element();
if (node && (node->hasTagName(colTag) || node->hasTagName(colgroupTag))) {
HTMLTableColElement* tc = static_cast<HTMLTableColElement*>(node);
m_span = tc->span();
} else
m_span = !(style() && style()->display() == TABLE_COLUMN_GROUP);
if (m_span != oldSpan && style() && parent())
setNeedsLayoutAndPrefWidthsRecalc();
}
bool RenderTableCol::isChildAllowed(RenderObject* child, RenderStyle* style) const
{
return !child->isText() && style && (style->display() == TABLE_COLUMN);
}
bool RenderTableCol::canHaveChildren() const
{
return style()->display() == TABLE_COLUMN_GROUP;
}
IntRect RenderTableCol::absoluteClippedOverflowRect()
{
RenderObject* table = parent();
if (table && !table->isTable())
table = table->parent();
if (table && table->isTable())
return table->absoluteClippedOverflowRect();
return IntRect();
}
void RenderTableCol::imageChanged(CachedImage* image)
{
if (!image || !image->canRender() || !parent())
return;
repaint();
}
#ifndef NDEBUG
void RenderTableCol::dump(TextStream* stream, DeprecatedString ind) const
{
*stream << " span=" << m_span;
RenderContainer::dump(stream, ind);
}
#endif
}