]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/treectrl.cpp
Added the code to copy setup0.h to setup.h if setup.h does not exist (due to checkout...
[wxWidgets.git] / src / msw / treectrl.cpp
index d4995dd32fc3623d8578055d97084402b680ab9e..c8973fd6b2b34a6140b99dd73ad629c2893dd2bd 100644 (file)
@@ -88,6 +88,7 @@
 // looks quite ugly.
 #define wxUSE_CHECKBOXES_IN_MULTI_SEL_TREE 0
 
+
 // ----------------------------------------------------------------------------
 // private functions
 // ----------------------------------------------------------------------------
@@ -448,7 +449,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxTreeCtrl, wxControl)
 // ----------------------------------------------------------------------------
 
 // handy table for sending events
-static const wxEventType g_events[2][2] =
+static wxEventType g_events[2][2] =
 {
     { wxEVT_COMMAND_TREE_ITEM_COLLAPSED, wxEVT_COMMAND_TREE_ITEM_COLLAPSING },
     { wxEVT_COMMAND_TREE_ITEM_EXPANDED,  wxEVT_COMMAND_TREE_ITEM_EXPANDING  }
@@ -501,8 +502,15 @@ void wxTreeCtrl::Init()
     m_textCtrl = NULL;
     m_hasAnyAttr = FALSE;
     m_dragImage = NULL;
-
     m_htSelStart = 0;
+
+    // Initialize static array of events, because with the new event system,
+    // they may not be initialized yet.
+
+    g_events[0][0] = wxEVT_COMMAND_TREE_ITEM_COLLAPSED;
+    g_events[0][1] = wxEVT_COMMAND_TREE_ITEM_COLLAPSING;
+    g_events[1][0] = wxEVT_COMMAND_TREE_ITEM_EXPANDED;
+    g_events[1][1] = wxEVT_COMMAND_TREE_ITEM_EXPANDING;
 }
 
 bool wxTreeCtrl::Create(wxWindow *parent,
@@ -1596,6 +1604,14 @@ void wxTreeCtrl::DeleteTextCtrl()
 {
     if ( m_textCtrl )
     {
+        // the HWND corresponding to this control is deleted by the tree
+        // control itself and we don't know when exactly this happens, so check
+        // if the window still exists before calling UnsubclassWin()
+        if ( !::IsWindow(GetHwndOf(m_textCtrl)) )
+        {
+            m_textCtrl->SetHWND(0);
+        }
+
         m_textCtrl->UnsubclassWin();
         m_textCtrl->SetHWND(0);
         delete m_textCtrl;
@@ -2225,6 +2241,9 @@ bool wxTreeCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
                         eventType = (int)hdr->code == NM_DBLCLK
                                     ? wxEVT_COMMAND_TREE_ITEM_ACTIVATED
                                     : wxEVT_COMMAND_TREE_ITEM_RIGHT_CLICK;
+
+                        event.m_pointDrag.x = tvhti.pt.x;
+                        event.m_pointDrag.y = tvhti.pt.y;
                     }
 
                     break;