X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/473d087e563d557a572ee85dd12778f37f8f18ec..b51b78a9c7b50053cdcf4a22d2222500a20eb8ee:/src/generic/listctrl.cpp diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index 6f14abfd3e..fa4ced72aa 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -952,11 +952,11 @@ void wxListHeaderWindow::OnMouse( wxMouseEvent &event ) m_minX = 0; bool hit_border = FALSE; int xpos = 0; - for (int j = 0; j < m_owner->GetColumnCount()-1; j++) + for (int j = 0; j < m_owner->GetColumnCount(); j++) { xpos += m_owner->GetColumnWidth( j ); m_column = j; - if ((abs(x-xpos) < 3) && (y < 22)) + if ((abs(x-xpos) < 3) && (y < 22) && (m_column < m_owner->GetColumnCount()-1)) { hit_border = TRUE; break; @@ -1060,24 +1060,33 @@ void wxListTextCtrl::OnChar( wxKeyEvent &event ) { (*m_accept) = TRUE; (*m_res) = GetValue(); - m_owner->SetFocus(); + + if (!wxPendingDelete.Member(this)) + wxPendingDelete.Append(this); + + if ((*m_accept) && ((*m_res) != m_startValue)) + m_owner->OnRenameAccept(); + return; } if (event.m_keyCode == WXK_ESCAPE) { (*m_accept) = FALSE; (*m_res) = ""; - m_owner->SetFocus(); + + if (!wxPendingDelete.Member(this)) + wxPendingDelete.Append(this); + return; } + event.Skip(); } void wxListTextCtrl::OnKillFocus( wxFocusEvent &WXUNUSED(event) ) { - if (wxPendingDelete.Member(this)) return; - - wxPendingDelete.Append(this); + if (!wxPendingDelete.Member(this)) + wxPendingDelete.Append(this); if ((*m_accept) && ((*m_res) != m_startValue)) m_owner->OnRenameAccept(); @@ -1097,7 +1106,7 @@ BEGIN_EVENT_TABLE(wxListMainWindow,wxScrolledWindow) EVT_KEY_DOWN (wxListMainWindow::OnKeyDown) EVT_SET_FOCUS (wxListMainWindow::OnSetFocus) EVT_KILL_FOCUS (wxListMainWindow::OnKillFocus) - EVT_SCROLLWIN (wxListMainWindow::OnScroll) + EVT_SCROLLWIN (wxListMainWindow::OnScroll) END_EVENT_TABLE() wxListMainWindow::wxListMainWindow() @@ -1166,11 +1175,13 @@ wxListMainWindow::wxListMainWindow( wxWindow *parent, wxWindowID id, m_renameTimer = new wxListRenameTimer( this ); m_renameAccept = FALSE; - SetBackgroundColour( *wxWHITE ); + SetBackgroundColour( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_LISTBOX ) ); } wxListMainWindow::~wxListMainWindow() { + DeleteEverything(); + if (m_hilightBrush) delete m_hilightBrush; delete m_renameTimer; @@ -2392,7 +2403,7 @@ void wxListMainWindow::DeleteColumn( int col ) if (node) m_columns.DeleteNode( node ); } -void wxListMainWindow::DeleteAllItems( void ) +void wxListMainWindow::DeleteAllItems() { m_dirty = TRUE; m_current = (wxListLineData *) NULL; @@ -2400,34 +2411,18 @@ void wxListMainWindow::DeleteAllItems( void ) // to make the deletion of all items faster, we don't send the // notifications in this case: this is compatible with wxMSW and // documented in DeleteAllItems() description -#if 0 - wxNode *node = m_lines.First(); - while (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - - DeleteLine( line ); - node = node->Next(); - } -#endif // 0 + wxListEvent event( wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS, GetParent()->GetId() ); + event.SetEventObject( GetParent() ); + GetParent()->GetEventHandler()->ProcessEvent( event ); m_lines.Clear(); } -void wxListMainWindow::DeleteEverything( void ) +void wxListMainWindow::DeleteEverything() { - m_dirty = TRUE; - m_current = (wxListLineData *) NULL; - wxNode *node = m_lines.First(); - while (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - DeleteLine( line ); - node = node->Next(); - } - m_lines.Clear(); - m_current = (wxListLineData *) NULL; + DeleteAllItems(); + m_columns.Clear(); } @@ -2748,7 +2743,7 @@ bool wxListCtrl::Create(wxWindow *parent, m_headerWin = (wxListHeaderWindow *) NULL; } - SetBackgroundColour( *wxWHITE ); + SetBackgroundColour( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_LISTBOX ) ); return ret; }