+#if wxABI_VERSION >= 20801
+void wxListCtrl::OnRightDown(wxMouseEvent& event)
+{
+ if (m_dbImpl)
+ FireMouseEvent(wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, event.GetPosition());
+ event.Skip();
+}
+
+void wxListCtrl::OnMiddleDown(wxMouseEvent& event)
+{
+ if (m_dbImpl)
+ FireMouseEvent(wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK, event.GetPosition());
+ event.Skip();
+}
+
+void wxListCtrl::FireMouseEvent(wxEventType eventType, wxPoint position)
+{
+ wxListEvent le( eventType, GetId() );
+ le.SetEventObject(this);
+ le.m_pointDrag = position;
+ le.m_itemIndex = -1;
+
+ int flags;
+ long item = HitTest(position, flags);
+ if (flags & wxLIST_HITTEST_ONITEM)
+ {
+ le.m_itemIndex = item;
+ le.m_item.m_itemId = item;
+ GetItem(le.m_item);
+ GetEventHandler()->ProcessEvent(le);
+ }
+}
+
+void wxListCtrl::OnChar(wxKeyEvent& event)
+{
+ if (m_dbImpl)
+ {
+ wxListEvent le( wxEVT_COMMAND_LIST_KEY_DOWN, GetId() );
+ le.SetEventObject(this);
+ le.m_code = event.GetKeyCode();
+ le.m_itemIndex = -1;
+
+ if (m_current != -1)
+ {
+ le.m_itemIndex = m_current;
+ le.m_item.m_itemId = m_current;
+ GetItem(le.m_item);
+ GetEventHandler()->ProcessEvent(le);
+ }
+ }
+ event.Skip();
+}
+#endif
+