]> git.saurik.com Git - wxWidgets.git/commitdiff
reduce flicker in header window when deleting items and let space select items even...
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 14 Aug 2001 11:51:24 +0000 (11:51 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 14 Aug 2001 11:51:24 +0000 (11:51 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11375 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/generic/listctrl.cpp

index 8f641d4537b665a8c23a75cbb8c213e9255349ba..5609fdd9973ee6417e57353be534e64d6cdaecf6 100644 (file)
@@ -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 );
                 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:
             break;
 
         case WXK_RETURN:
@@ -3798,7 +3804,7 @@ void wxListMainWindow::RefreshAll()
     Refresh();
 
     wxListHeaderWindow *headerWin = GetListCtrl()->m_headerWin;
     Refresh();
 
     wxListHeaderWindow *headerWin = GetListCtrl()->m_headerWin;
-    if ( headerWin )
+    if ( headerWin && headerWin->m_dirty )
     {
         headerWin->m_dirty = FALSE;
         headerWin->Refresh();
     {
         headerWin->m_dirty = FALSE;
         headerWin->Refresh();
@@ -3898,6 +3904,7 @@ void wxListMainWindow::DeleteItem( long lindex )
         m_lines.RemoveAt( index );
     }
 
         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 );
     m_dirty = TRUE;
 
     SendNotify( index, wxEVT_COMMAND_LIST_DELETE_ITEM );