X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cfb50f14ecc87d39319a3f23ddbae938e7858c33..7e2c43b8551c394d790e416ae52a4476c759683e:/src/generic/listctrl.cpp diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index 54e7506831..c64f7e4229 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -781,7 +781,7 @@ void wxListHeaderWindow::DrawCurrent() m_owner->ClientToScreen( &x2, &y2 ); wxScreenDC dc; - dc.SetLogicalFunction( wxXOR ); + dc.SetLogicalFunction( wxINVERT ); dc.SetPen( wxPen( *wxBLACK, 2, wxSOLID ) ); dc.SetBrush( *wxTRANSPARENT_BRUSH ); @@ -1424,6 +1424,14 @@ void wxListMainWindow::OnChar( wxKeyEvent &event ) 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) { @@ -1781,7 +1789,7 @@ void wxListMainWindow::SetItemState( long item, long state, long stateMask ) m_current = line; FocusLine( m_current ); RefreshLine( m_current ); - RefreshLine( oldCurrent ); + if (oldCurrent) RefreshLine( oldCurrent ); } } @@ -1799,9 +1807,9 @@ void wxListMainWindow::SetItemState( long item, long state, long stateMask ) 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())