}
//protected:
- // the array of all line objects for a non virtual list control
+ // the array of all line objects for a non virtual list control (for the
+ // virtual list control we only ever use m_lines[0])
wxListLineDataArray m_lines;
// the list of column objects
dc->DrawRectangle( rectHL );
}
- wxListItemDataList::Node *node = m_items.GetFirst();
- wxCHECK_RET( node, _T("no subitems at all??") );
-
- size_t col = 0;
wxCoord x = rect.x + HEADER_OFFSET_X,
y = rect.y + (LINE_SPACING + EXTRA_HEIGHT) / 2;
- while ( node )
+ size_t col = 0;
+ for ( wxListItemDataList::Node *node = m_items.GetFirst();
+ node;
+ node = node->GetNext(), col++ )
{
wxListItemData *item = node->GetData();
- int width = m_owner->GetColumnWidth(col++);
+ int width = m_owner->GetColumnWidth(col);
int xOld = x;
x += width;
{
dc->DrawText( item->GetText(), xOld, y );
}
-
- node = node->GetNext();
}
}
{
wxASSERT_MSG( !IsEmpty(), _T("invalid line index") );
- if ( m_lines.IsEmpty() )
+ wxASSERT_MSG( IsVirtual(), _T("GetDummyLine() shouldn't be called") );
+
+ wxListMainWindow *self = wxConstCast(this, wxListMainWindow);
+
+ // we need to recreate the dummy line if the number of columns in the
+ // control changed as it would have the incorrect number of fields
+ // otherwise
+ if ( !m_lines.IsEmpty() &&
+ m_lines[0].m_items.GetCount() != (size_t)GetColumnCount() )
{
- // normal controls are supposed to have something in m_lines
- // already if it's not empty
- wxASSERT_MSG( IsVirtual(), _T("logic error") );
+ self->m_lines.Clear();
+ }
- wxListMainWindow *self = wxConstCast(this, wxListMainWindow);
+ if ( m_lines.IsEmpty() )
+ {
wxListLineData *line = new wxListLineData(self);
self->m_lines.Add(line);
+
+ // don't waste extra memory -- there never going to be anything
+ // else/more in this array
+ self->m_lines.Shrink();
}
return &m_lines[0];
void wxListMainWindow::DeleteEverything()
{
- DeleteAllItems();
-
m_columns.Clear();
+
+ DeleteAllItems();
}
// ----------------------------------------------------------------------------
#endif // wxUSE_LISTCTRL
-// vi:sts=4:sw=4:et