/////////////////////////////////////////////////////////////////////////////
/*
- TODO for better virtual list control support:
+ TODO
- 1. we need to implement searching/sorting somehow
+ 1. we need to implement searching/sorting for virtual controls somehow
+ 2. when changing selection the lines are refreshed twice
*/
// ============================================================================
void wxListMainWindow::RefreshLine( size_t line )
{
- size_t visibleFrom, visibleTo;
- GetVisibleLinesRange(&visibleFrom, &visibleTo);
+ if ( HasFlag(wxLC_REPORT) )
+ {
+ size_t visibleFrom, visibleTo;
+ GetVisibleLinesRange(&visibleFrom, &visibleTo);
- if ( line < visibleFrom || line > visibleTo )
- return;
+ if ( line < visibleFrom || line > visibleTo )
+ return;
+ }
wxRect rect = GetLineRect(line);
le.m_itemIndex = m_current;
GetLine(m_current)->GetItem( 0, le.m_item );
GetParent()->GetEventHandler()->ProcessEvent( le );
+
+ if ( IsHighlighted(m_current) )
+ {
+ // don't unselect the item in single selection mode
+ break;
+ }
+ //else: select it in ReverseHighlight() below if unselected
}
- else
- {
- ReverseHighlight(m_current);
- }
+
+ ReverseHighlight(m_current);
break;
case WXK_RETURN:
Refresh();
wxListHeaderWindow *headerWin = GetListCtrl()->m_headerWin;
- if ( headerWin )
+ if ( headerWin && headerWin->m_dirty )
{
headerWin->m_dirty = FALSE;
headerWin->Refresh();
m_lines.RemoveAt( index );
}
+ // we need to refresh the (vert) scrollbar as the number of items changed
m_dirty = TRUE;
SendNotify( index, wxEVT_COMMAND_LIST_DELETE_ITEM );