+ wxListEvent le( wxEVT_COMMAND_LIST_KEY_DOWN, GetId() );
+ le.SetEventObject(this);
+ le.m_code = event.GetKeyCode();
+ le.m_itemIndex = -1;
+
+ if (m_current == -1)
+ {
+ // if m_current isn't set, check if there's been a selection
+ // made before continuing
+ m_current = GetNextItem(-1, wxLIST_NEXT_BELOW, wxLIST_STATE_SELECTED);
+ }
+
+ // We need to determine m_current ourselves when navigation keys
+ // are used. Note that PAGEUP and PAGEDOWN do not alter the current
+ // item on native Mac ListCtrl, so we only handle up and down keys.
+ switch ( event.GetKeyCode() )
+ {
+ case WXK_UP:
+ if ( m_current > 0 )
+ m_current -= 1;
+ else
+ m_current = 0;
+
+ break;
+
+ case WXK_DOWN:
+ if ( m_current < GetItemCount() - 1 )
+ m_current += 1;
+ else
+ m_current = GetItemCount() - 1;
+
+ break;
+ }
+
+ if (m_current != -1)