From 70541533c8e108249a82fbe2bc05ccfb73bf028d Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 14 Aug 2001 11:51:24 +0000 Subject: [PATCH] reduce flicker in header window when deleting items and let space select items even in single selection mode git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11375 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/generic/listctrl.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index 8f641d4537..5609fdd997 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -9,9 +9,10 @@ ///////////////////////////////////////////////////////////////////////////// /* - 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 */ // ============================================================================ @@ -3172,11 +3173,16 @@ void wxListMainWindow::OnChar( wxKeyEvent &event ) 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: @@ -3798,7 +3804,7 @@ void wxListMainWindow::RefreshAll() Refresh(); wxListHeaderWindow *headerWin = GetListCtrl()->m_headerWin; - if ( headerWin ) + if ( headerWin && headerWin->m_dirty ) { headerWin->m_dirty = FALSE; headerWin->Refresh(); @@ -3898,6 +3904,7 @@ void wxListMainWindow::DeleteItem( long lindex ) 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 );