#include "wx/log.h"
#include "wx/dynarray.h"
#include "wx/imaglist.h"
-#include "wx/treectrl.h"
#include "wx/settings.h"
-
+#include "wx/msw/treectrl.h"
#include "wx/msw/dragimag.h"
#ifdef __GNUWIN32_OLD__
{
m_imageListNormal = NULL;
m_imageListState = NULL;
+ m_ownsImageListNormal = m_ownsImageListState = FALSE;
m_textCtrl = NULL;
m_hasAnyAttr = FALSE;
m_dragImage = NULL;
// delete user data to prevent memory leaks
DeleteAllItems();
+
+ if (m_ownsImageListNormal) delete m_imageListNormal;
+ if (m_ownsImageListState) delete m_imageListState;
}
// ----------------------------------------------------------------------------
void wxTreeCtrl::SetImageList(wxImageList *imageList)
{
+ if (m_ownsImageListNormal) delete m_imageListNormal;
SetAnyImageList(m_imageListNormal = imageList, TVSIL_NORMAL);
+ m_ownsImageListNormal = FALSE;
}
void wxTreeCtrl::SetStateImageList(wxImageList *imageList)
{
+ if (m_ownsImageListState) delete m_imageListState;
SetAnyImageList(m_imageListState = imageList, TVSIL_STATE);
+ m_ownsImageListState = FALSE;
+}
+
+void wxTreeCtrl::AssignImageList(wxImageList *imageList)
+{
+ SetImageList(imageList);
+ m_ownsImageListNormal = TRUE;
+}
+
+void wxTreeCtrl::AssignStateImageList(wxImageList *imageList)
+{
+ SetStateImageList(imageList);
+ m_ownsImageListState = TRUE;
}
size_t wxTreeCtrl::GetChildrenCount(const wxTreeItemId& item,
void wxTreeCtrl::SetItemData(const wxTreeItemId& item, wxTreeItemData *data)
{
+ // first, associate this piece of data with this item
+ if ( data )
+ {
+ data->SetId(item);
+ }
+
wxTreeViewItem tvItem(item, TVIF_PARAM);
if ( HasIndirectData(item) )
wxTreeItemId wxTreeCtrl::GetSelection() const
{
- wxCHECK_MSG( !(m_windowStyle & wxTR_MULTIPLE), (WXHTREEITEM)0,
+ wxCHECK_MSG( !(m_windowStyle & wxTR_MULTIPLE), (long)(WXHTREEITEM)0,
wxT("this only works with single selection controls") );
return wxTreeItemId((WXHTREEITEM) TreeView_GetSelection(GetHwnd()));
int image, int selectedImage,
wxTreeItemData *data)
{
- return DoInsertItem(wxTreeItemId((WXHTREEITEM) 0), (WXHTREEITEM) 0,
+ return DoInsertItem(wxTreeItemId((long) (WXHTREEITEM) 0), (long)(WXHTREEITEM) 0,
text, image, selectedImage, data);
}
wxT("doesn't make sense, may be you want UnselectAll()?") );
// just remove the selection
- SelectItem(wxTreeItemId((WXHTREEITEM) 0));
+ SelectItem(wxTreeItemId((long) (WXHTREEITEM) 0));
}
void wxTreeCtrl::UnselectAll()
delete data; // can't be NULL here
m_itemsWithIndirectData.Remove(item);
+#if 0
+ int iIndex = m_itemsWithIndirectData.Index(item);
+ wxASSERT( iIndex != wxNOT_FOUND) ;
+ m_itemsWithIndirectData.wxBaseArray::RemoveAt((size_t)iIndex);
+#endif
}
else
{
break;
case TVN_ENDLABELEDIT:
- // return TRUE to set the label to the new string
+ // return TRUE to set the label to the new string: note that we
+ // also must pretend that we did process the message or it is going
+ // to be passed to DefWindowProc() which will happily return FALSE
+ // cancelling the label change
*result = event.IsAllowed();
+ processed = TRUE;
// ensure that we don't have the text ctrl which is going to be
// deleted any more
return processed;
}
-// ----------------------------------------------------------------------------
-// Tree event
-// ----------------------------------------------------------------------------
-
-IMPLEMENT_DYNAMIC_CLASS(wxTreeEvent, wxNotifyEvent)
-
-wxTreeEvent::wxTreeEvent(wxEventType commandType, int id)
- : wxNotifyEvent(commandType, id)
-{
- m_code = 0;
- m_itemOld = 0;
-}
-
#endif // __WIN95__