From: Vadim Zeitlin Date: Sun, 29 Oct 2006 20:24:11 +0000 (+0000) Subject: post WM_CLOSE instead of deleting the inplace edit control (second incarnation of... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/55f42db2fb9228acd93329f702f1f41af7fa8f15 post WM_CLOSE instead of deleting the inplace edit control (second incarnation of the patch 1394785) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42657 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/msw/listctrl.cpp b/src/msw/listctrl.cpp index a0301aec4a..f90acc0439 100644 --- a/src/msw/listctrl.cpp +++ b/src/msw/listctrl.cpp @@ -1394,21 +1394,19 @@ bool wxListCtrl::EndEditLabel(bool cancel) { // m_textCtrl is not always ready, ie. in EVT_LIST_BEGIN_LABEL_EDIT HWND hwnd = ListView_GetEditControl(GetHwnd()); - bool b = (hwnd != NULL); - if (b) - { - if (cancel) - ::SetWindowText(hwnd, wxEmptyString); // dubious but better than nothing - if (m_textCtrl) - { - m_textCtrl->UnsubclassWin(); - m_textCtrl->SetHWND(0); - delete m_textCtrl; - m_textCtrl = NULL; - } - ::DestroyWindow(hwnd); - } - return b; + if ( !hwnd ) + return false; + + if ( cancel ) + ::SetWindowText(hwnd, wxEmptyString); // dubious but better than nothing + + // we shouldn't destroy the control ourselves according to MSDN, which + // proposes WM_CANCELMODE to do this, but it doesn't seem to work + // + // posting WM_CLOSE to it does seem to work without any side effects + ::PostMessage(hwnd, WM_CLOSE, 0, 0); + + return true; } // Ensures this item is visible