void wxListMainWindow::EditLabel( long item )
 {
-    wxCHECK_RET( ((size_t)item < m_lines.GetCount()), 
+    wxCHECK_RET( ((size_t)item < m_lines.GetCount()),
                  wxT("wrong index in wxListCtrl::Edit()") );
 
     m_currentEdit = &m_lines[(size_t)item];
 
 void wxListMainWindow::OnMouse( wxMouseEvent &event )
 {
+    event.SetEventObject( GetParent() );
     if (GetParent()->GetEventHandler()->ProcessEvent( event)) return;
 
     if (!m_current) return;
             else if (event.ShiftDown())
             {
                 size_t j;
-                
+
                 m_current = line;
 
                 int numOfCurrent = -1;
             if (index != wxNOT_FOUND)
             {
                 index -= steps;
-                if (index < 0) index = 0;          
+                if (index < 0) index = 0;
                 OnArrowChar( &m_lines[index], event.ShiftDown() );
             }
             break;
             if (index != wxNOT_FOUND)
             {
                 index += steps;
-                if ((size_t)index >= m_lines.GetCount()) 
+                if ((size_t)index >= m_lines.GetCount())
                     index = m_lines.GetCount()-1;
                 OnArrowChar( &m_lines[index], event.ShiftDown() );
             }
                 if (index != wxNOT_FOUND)
                 {
                     index += m_visibleLines;
-                    if ((size_t)index >= m_lines.GetCount()) 
+                    if ((size_t)index >= m_lines.GetCount())
                         index = m_lines.GetCount()-1;
                     OnArrowChar( &m_lines[index], event.ShiftDown() );
                 }
         wxClientDC dc(this);
         dc.SetFont( GetFont() );
         int max = 10;
-        
+
         for (size_t i = 0; i < m_lines.GetCount(); i++)
         {
             wxListLineData *line = &m_lines[i];
     else
     {
         m_lines.Add( line );
+        item.m_itemId = m_lines.GetCount();
     }
 }