diff options
Diffstat (limited to 'src/3rdparty/webkit/WebCore/html/DataGridColumnList.cpp')
-rw-r--r-- | src/3rdparty/webkit/WebCore/html/DataGridColumnList.cpp | 40 |
1 files changed, 34 insertions, 6 deletions
diff --git a/src/3rdparty/webkit/WebCore/html/DataGridColumnList.cpp b/src/3rdparty/webkit/WebCore/html/DataGridColumnList.cpp index 48f7d605b5..9613402f39 100644 --- a/src/3rdparty/webkit/WebCore/html/DataGridColumnList.cpp +++ b/src/3rdparty/webkit/WebCore/html/DataGridColumnList.cpp @@ -24,13 +24,22 @@ */ #include "config.h" -#include "DataGridColumnList.h" + +#if ENABLE(DATAGRID) #include "AtomicString.h" +#include "DataGridColumnList.h" +#include "HTMLDataGridElement.h" #include "PlatformString.h" +#include "RenderObject.h" namespace WebCore { +DataGridColumnList::DataGridColumnList(HTMLDataGridElement* dataGrid) + : m_dataGrid(dataGrid) +{ +} + DataGridColumnList::~DataGridColumnList() { clear(); @@ -46,13 +55,26 @@ DataGridColumn* DataGridColumnList::itemWithName(const AtomicString& name) const return 0; } +void DataGridColumnList::setDataGridNeedsLayout() +{ + // Mark the datagrid as needing layout. + if (dataGrid() && dataGrid()->renderer()) + dataGrid()->renderer()->setNeedsLayout(true); +} + DataGridColumn* DataGridColumnList::add(const String& id, const String& label, const String& type, bool primary, unsigned short sortable) { - RefPtr<DataGridColumn> column = DataGridColumn::create(this, id, label, type, primary, sortable); - if (primary) + return add(DataGridColumn::create(id, label, type, primary, sortable).get()); +} + +DataGridColumn* DataGridColumnList::add(DataGridColumn* column) +{ + if (column->primary()) m_primaryColumn = column; m_columns.append(column); - return column.get(); + column->setColumnList(this); + setDataGridNeedsLayout(); + return column; } void DataGridColumnList::remove(DataGridColumn* col) @@ -65,6 +87,8 @@ void DataGridColumnList::remove(DataGridColumn* col) m_primaryColumn = 0; if (col == m_sortColumn) m_sortColumn = 0; + col->setColumnList(0); + setDataGridNeedsLayout(); } void DataGridColumnList::move(DataGridColumn* col, unsigned long index) @@ -73,16 +97,18 @@ void DataGridColumnList::move(DataGridColumn* col, unsigned long index) if (colIndex == notFound) return; m_columns.insert(index, col); + setDataGridNeedsLayout(); } void DataGridColumnList::clear() { unsigned length = m_columns.size(); for (unsigned i = 0; i < length; ++i) - m_columns[i]->detachFromColumnList(); + m_columns[i]->setColumnList(0); m_columns.clear(); m_primaryColumn = 0; m_sortColumn = 0; + setDataGridNeedsLayout(); } void DataGridColumnList::primaryColumnChanged(DataGridColumn* col) @@ -92,7 +118,9 @@ void DataGridColumnList::primaryColumnChanged(DataGridColumn* col) else if (m_primaryColumn = col) m_primaryColumn = 0; - // FIXME: Invalidate the tree. + setDataGridNeedsLayout(); } } // namespace WebCore + +#endif |