public:
wxListLineData(wxListMainWindow *owner);
- ~wxListLineData() { delete m_gi; }
+ ~wxListLineData()
+ {
+ WX_CLEAR_LIST(wxListItemDataList, m_items);
+ delete m_gi;
+ }
// are we in report mode?
inline bool InReportView() const;
wxListLineData::wxListLineData( wxListMainWindow *owner )
{
m_owner = owner;
- m_items.DeleteContents( TRUE );
if ( InReportView() )
{
void wxListLineData::CalculateSize( wxDC *dc, int spacing )
{
- wxListItemDataList::Node *node = m_items.GetFirst();
+ wxListItemDataList::compatibility_iterator node = m_items.GetFirst();
wxCHECK_RET( node, _T("no subitems at all??") );
wxListItemData *item = node->GetData();
int window_width,
int spacing )
{
- wxListItemDataList::Node *node = m_items.GetFirst();
+ wxListItemDataList::compatibility_iterator node = m_items.GetFirst();
wxCHECK_RET( node, _T("no subitems at all??") );
wxListItemData *item = node->GetData();
void wxListLineData::SetItem( int index, const wxListItem &info )
{
- wxListItemDataList::Node *node = m_items.Item( index );
+ wxListItemDataList::compatibility_iterator node = m_items.Item( index );
wxCHECK_RET( node, _T("invalid column index in SetItem") );
wxListItemData *item = node->GetData();
void wxListLineData::GetItem( int index, wxListItem &info )
{
- wxListItemDataList::Node *node = m_items.Item( index );
+ wxListItemDataList::compatibility_iterator node = m_items.Item( index );
if (node)
{
wxListItemData *item = node->GetData();
{
wxString s;
- wxListItemDataList::Node *node = m_items.Item( index );
+ wxListItemDataList::compatibility_iterator node = m_items.Item( index );
if (node)
{
wxListItemData *item = node->GetData();
void wxListLineData::SetText( int index, const wxString s )
{
- wxListItemDataList::Node *node = m_items.Item( index );
+ wxListItemDataList::compatibility_iterator node = m_items.Item( index );
if (node)
{
wxListItemData *item = node->GetData();
void wxListLineData::SetImage( int index, int image )
{
- wxListItemDataList::Node *node = m_items.Item( index );
+ wxListItemDataList::compatibility_iterator node = m_items.Item( index );
wxCHECK_RET( node, _T("invalid column index in SetImage()") );
wxListItemData *item = node->GetData();
int wxListLineData::GetImage( int index ) const
{
- wxListItemDataList::Node *node = m_items.Item( index );
+ wxListItemDataList::compatibility_iterator node = m_items.Item( index );
wxCHECK_MSG( node, -1, _T("invalid column index in GetImage()") );
wxListItemData *item = node->GetData();
wxListItemAttr *wxListLineData::GetAttr() const
{
- wxListItemDataList::Node *node = m_items.GetFirst();
+ wxListItemDataList::compatibility_iterator node = m_items.GetFirst();
wxCHECK_MSG( node, NULL, _T("invalid column index in GetAttr()") );
wxListItemData *item = node->GetData();
void wxListLineData::SetAttr(wxListItemAttr *attr)
{
- wxListItemDataList::Node *node = m_items.GetFirst();
+ wxListItemDataList::compatibility_iterator node = m_items.GetFirst();
wxCHECK_RET( node, _T("invalid column index in SetAttr()") );
wxListItemData *item = node->GetData();
void wxListLineData::Draw( wxDC *dc )
{
- wxListItemDataList::Node *node = m_items.GetFirst();
+ wxListItemDataList::compatibility_iterator node = m_items.GetFirst();
wxCHECK_RET( node, _T("no subitems at all??") );
bool highlighted = IsHighlighted();
y = rect.y + (LINE_SPACING + EXTRA_HEIGHT) / 2;
size_t col = 0;
- for ( wxListItemDataList::Node *node = m_items.GetFirst();
+ for ( wxListItemDataList::compatibility_iterator node = m_items.GetFirst();
node;
node = node->GetNext(), col++ )
{
void wxListMainWindow::Init()
{
- m_columns.DeleteContents( TRUE );
m_dirty = TRUE;
m_countVirt = 0;
m_lineFrom =
wxListMainWindow::~wxListMainWindow()
{
DoDeleteAllItems();
+ WX_CLEAR_LIST(wxListHeaderDataList, m_columns);
delete m_highlightBrush;
delete m_highlightUnfocusedBrush;
le.IsAllowed();
}
+#ifdef __VMS__ // Ignore unreacheable code
+# pragma message disable initnotreach
+#endif
+
void wxListMainWindow::OnRenameCancelled(size_t itemEdit)
{
// wxMSW seems not to notify the program about
GetEventHandler()->ProcessEvent( le );
}
+#ifdef __VMS__
+# pragma message enable initnotreach
+#endif
void wxListMainWindow::OnMouse( wxMouseEvent &event )
{
void wxListMainWindow::SetColumn( int col, wxListItem &item )
{
- wxListHeaderDataList::Node *node = m_columns.Item( col );
+ wxListHeaderDataList::compatibility_iterator node = m_columns.Item( col );
wxCHECK_RET( node, _T("invalid column index in SetColumn") );
if ( headerWin )
headerWin->m_dirty = TRUE;
- wxListHeaderDataList::Node *node = m_columns.Item( col );
+ wxListHeaderDataList::compatibility_iterator node = m_columns.Item( col );
wxCHECK_RET( node, _T("no column?") );
wxListHeaderData *column = node->GetData();
for ( size_t i = 0; i < count; i++ )
{
wxListLineData *line = GetLine(i);
- wxListItemDataList::Node *n = line->m_items.Item( col );
+ wxListItemDataList::compatibility_iterator n = line->m_items.Item( col );
wxCHECK_RET( n, _T("no subitem?") );
void wxListMainWindow::GetColumn( int col, wxListItem &item ) const
{
- wxListHeaderDataList::Node *node = m_columns.Item( col );
+ wxListHeaderDataList::compatibility_iterator node = m_columns.Item( col );
wxCHECK_RET( node, _T("invalid column index in GetColumn") );
wxListHeaderData *column = node->GetData();
int wxListMainWindow::GetColumnWidth( int col ) const
{
- wxListHeaderDataList::Node *node = m_columns.Item( col );
+ wxListHeaderDataList::compatibility_iterator node = m_columns.Item( col );
wxCHECK_MSG( node, 0, _T("invalid column index") );
wxListHeaderData *column = node->GetData();
void wxListMainWindow::DeleteColumn( int col )
{
- wxListHeaderDataList::Node *node = m_columns.Item( col );
+ wxListHeaderDataList::compatibility_iterator node = m_columns.Item( col );
wxCHECK_RET( node, wxT("invalid column index in DeleteColumn()") );
m_dirty = TRUE;
- m_columns.DeleteNode( node );
+ delete node->GetData();
+ m_columns.Erase( node );
+
+ if ( !IsVirtual() )
+ {
+ // update all the items
+ for ( size_t i = 0; i < m_lines.GetCount(); i++ )
+ {
+ wxListLineData * const line = GetLine(i);
+ wxListItemDataList::compatibility_iterator n = line->m_items.Item( col );
+ delete n->GetData();
+ line->m_items.Erase(n);
+ }
+ }
// invalidate it as it has to be recalculated
m_headerWidth = 0;
void wxListMainWindow::DeleteEverything()
{
- m_columns.Clear();
+ WX_CLEAR_LIST(wxListHeaderDataList, m_columns);
DeleteAllItems();
}
{
if (item.m_width == wxLIST_AUTOSIZE_USEHEADER)
item.m_width = GetTextLength( item.m_text );
+
wxListHeaderData *column = new wxListHeaderData( item );
- if ((col >= 0) && (col < (int)m_columns.GetCount()))
+ bool insert = (col >= 0) && ((size_t)col < m_columns.GetCount());
+ if ( insert )
{
- wxListHeaderDataList::Node *node = m_columns.Item( col );
+ wxListHeaderDataList::compatibility_iterator node = m_columns.Item( col );
m_columns.Insert( node, column );
}
else
m_columns.Append( column );
}
+ if ( !IsVirtual() )
+ {
+ // update all the items
+ for ( size_t i = 0; i < m_lines.GetCount(); i++ )
+ {
+ wxListLineData * const line = GetLine(i);
+ wxListItemData * const data = new wxListItemData(this);
+ if ( insert )
+ line->m_items.Insert(col, data);
+ else
+ line->m_items.Append(data);
+ }
+ }
+
// invalidate it as it has to be recalculated
m_headerWidth = 0;
}
BEGIN_EVENT_TABLE(wxGenericListCtrl,wxControl)
EVT_SIZE(wxGenericListCtrl::OnSize)
- EVT_IDLE(wxGenericListCtrl::OnIdle)
END_EVENT_TABLE()
wxGenericListCtrl::wxGenericListCtrl()
}
}
-void wxGenericListCtrl::OnIdle( wxIdleEvent & event )
+void wxGenericListCtrl::OnInternalIdle()
{
- event.Skip();
-
+ wxWindow::OnInternalIdle();
+
// do it only if needed
if ( !m_mainWin->m_dirty )
return;