ke.SetEventObject( parent );
if (parent->GetEventHandler()->ProcessEvent( ke )) return;
+ if (event.KeyCode() == WXK_TAB)
+ {
+ wxNavigationKeyEvent nevent;
+ nevent.SetDirection( !event.ShiftDown() );
+ nevent.SetCurrentFocus( m_parent );
+ if (m_parent->GetEventHandler()->ProcessEvent( nevent )) return;
+ }
+
/* no item -> nothing to do */
if (!m_current)
{
m_dirty = TRUE;
- wxNode *node = m_columns.Nth( col );
+ wxNode *node = (wxNode*) NULL;
+
+ if (width == wxLIST_AUTOSIZE_USEHEADER) width = 80;
+ if (width == wxLIST_AUTOSIZE)
+ {
+ wxClientDC dc(this);
+ dc.SetFont( GetFont() );
+ int max = 10;
+ node = m_lines.First();
+ while (node)
+ {
+ wxListLineData *line = (wxListLineData*)node->Data();
+ wxNode *n = line->m_items.Nth( col );
+ if (n)
+ {
+ wxListItemData *item = (wxListItemData*)n->Data();
+ int current = 0, ix = 0, iy = 0;
+ long lx = 0, ly = 0;
+ if (item->HasImage())
+ {
+ GetImageSize( item->GetImage(), ix, iy );
+ current = ix + 5;
+ }
+ if (item->HasText())
+ {
+ wxString str;
+ item->GetText( str );
+ dc.GetTextExtent( str, &lx, &ly );
+ current += lx;
+ }
+ if (current > max) max = current;
+ }
+ node = node->Next();
+ }
+ width = max+10;
+ }
+
+ node = m_columns.Nth( col );
if (node)
{
wxListHeaderData *column = (wxListHeaderData*)node->Data();
m_current = line;
FocusLine( m_current );
RefreshLine( m_current );
- RefreshLine( oldCurrent );
+ if (oldCurrent) RefreshLine( oldCurrent );
}
}
UnfocusLine( m_current );
m_current = line;
FocusLine( m_current );
- oldCurrent->Hilight( FALSE );
+ if (oldCurrent) oldCurrent->Hilight( FALSE );
RefreshLine( m_current );
- RefreshLine( oldCurrent );
+ if (oldCurrent) RefreshLine( oldCurrent );
}
bool on = state & wxLIST_STATE_SELECTED;
if (on != line->IsHilighted())