X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a9aead31d6c260600f8a292345755f7a86a53e35..55fbde1232bff0ed44c23775911574ac1b2f8a0a:/src/generic/listctrl.cpp diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index 643b67245c..67562c04aa 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -2160,16 +2160,17 @@ bool wxListTextCtrlWrapper::AcceptChanges() { const wxString value = m_text->GetValue(); - if ( value == m_startValue ) - // nothing changed, always accept - return true; - + // notice that we should always call OnRenameAccept() to generate the "end + // label editing" event, even if the user hasn't really changed anything if ( !m_owner->OnRenameAccept(m_itemEdited, value) ) + { // vetoed by the user return false; + } - // accepted, do rename the item - m_owner->SetItemText(m_itemEdited, value); + // accepted, do rename the item (unless nothing changed) + if ( value != m_startValue ) + m_owner->SetItemText(m_itemEdited, value); return true; } @@ -4810,6 +4811,11 @@ int LINKAGEMODE list_ctrl_compare_func_1( wxListLineData **arg1, wxListLineData void wxListMainWindow::SortItems( wxListCtrlCompare fn, long data ) { + // selections won't make sense any more after sorting the items so reset + // them + HighlightAll(false); + ResetCurrent(); + list_ctrl_compare_func_2 = fn; list_ctrl_compare_data = data; m_lines.Sort( list_ctrl_compare_func_1 ); @@ -4994,6 +5000,9 @@ bool wxGenericListCtrl::Create(wxWindow *parent, if ( !wxControl::Create( parent, id, pos, size, style, validator, name ) ) return false; + // this window itself shouldn't get the focus, only m_mainWin should + SetCanFocus(false); + // don't create the inner window with the border style &= ~wxBORDER_MASK;