int numColumns = m_owner->GetColumnCount();
wxListItem item;
- for (int i = 0; i < numColumns; i++)
+ for ( int i = 0; i < numColumns && x < w; i++ )
{
m_owner->GetColumn( i, item );
int wCol = item.m_width;
dc.DrawText( item.GetText(),
x + EXTRA_WIDTH, HEADER_OFFSET_Y + EXTRA_HEIGHT );
- if ( x > w - wCol + 5 )
- break;
-
x += wCol;
}
+
dc.EndDrawing();
}
for ( size_t line = from; line <= to; line++ )
{
- if ( IsHighlighted(line) )
+ if ( IsHighlighted(line) || (line == m_current) )
{
if ( line < selMin )
selMin = line;
nevent.SetDirection( !event.ShiftDown() );
nevent.SetEventObject( GetParent()->GetParent() );
nevent.SetCurrentFocus( m_parent );
- if (GetParent()->GetParent()->GetEventHandler()->ProcessEvent( nevent )) return;
+ if (GetParent()->GetParent()->GetEventHandler()->ProcessEvent( nevent ))
+ return;
}
/* no item -> nothing to do */
case WXK_SPACE:
if ( IsSingleSel() )
{
- wxListEvent le( wxEVT_COMMAND_LIST_ITEM_ACTIVATED,
- GetParent()->GetId() );
- le.SetEventObject( GetParent() );
- le.m_itemIndex = m_current;
- GetLine(m_current)->GetItem( 0, le.m_item );
- GetParent()->GetEventHandler()->ProcessEvent( le );
+ SendNotify( m_current, wxEVT_COMMAND_LIST_ITEM_ACTIVATED );
if ( IsHighlighted(m_current) )
{
case WXK_RETURN:
case WXK_EXECUTE:
- {
- wxListEvent le( wxEVT_COMMAND_LIST_ITEM_ACTIVATED,
- GetParent()->GetId() );
- le.SetEventObject( GetParent() );
- le.m_itemIndex = m_current;
- GetLine(m_current)->GetItem( 0, le.m_item );
- GetParent()->GetEventHandler()->ProcessEvent( le );
- }
+ SendNotify( m_current, wxEVT_COMMAND_LIST_ITEM_ACTIVATED );
break;
default:
// EVT_KILL_FOCUS before which means that we finish by redrawing the items
// which are already drawn correctly resulting in horrible flicker - avoid
// it
- if ( m_hasFocus )
- return;
+ if ( !m_hasFocus )
+ {
+ m_hasFocus = TRUE;
- m_hasFocus = TRUE;
+ RefreshSelected();
+ }
- if (!GetParent())
+ if ( !GetParent() )
return;
- RefreshSelected();
-
#ifdef __WXGTK__
g_focusWindow = GetParent();
#endif
{
size_t count = m_mainWin->m_columns.GetCount();
for ( size_t n = 0; n < count; n++ )
- DeleteColumn(n);
+ DeleteColumn(0);
return TRUE;
}