]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/listctrl.cpp
Some random test apps that I've been playing with
[wxWidgets.git] / src / msw / listctrl.cpp
index d3adde8fd179e63c7794b4e11b07b84636c247ad..f90acc043919d6183c90bb19a9b00c8107c9290f 100644 (file)
@@ -26,6 +26,8 @@
 
 #if wxUSE_LISTCTRL
 
+#include "wx/listctrl.h"
+
 #ifndef WX_PRECOMP
     #include "wx/msw/wrapcctl.h" // include <commctrl.h> "properly"
     #include "wx/app.h"
@@ -37,7 +39,6 @@
 #endif
 
 #include "wx/imaglist.h"
-#include "wx/listctrl.h"
 
 #include "wx/msw/private.h"
 
@@ -1393,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