X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/14ba002a91134d0e4ae266567f74c038ccdd9487..4a528443651296fc50db585e780173cbe5e42db3:/src/msw/treectrl.cpp diff --git a/src/msw/treectrl.cpp b/src/msw/treectrl.cpp index 13edcec7c3..1a0cf91a88 100644 --- a/src/msw/treectrl.cpp +++ b/src/msw/treectrl.cpp @@ -42,7 +42,7 @@ #include "wx/dynarray.h" #include "wx/imaglist.h" #include "wx/settings.h" -#include "wx/msw/treectrl.h" +#include "wx/treectrl.h" #include "wx/msw/dragimag.h" // macros to hide the cast ugliness @@ -311,6 +311,11 @@ public: m_tree = tree; } + // give it a virtual dtor: not really needed as the class is never used + // polymorphically and not even allocated on heap at all, but this is safer + // (in case it ever is) and silences the compiler warnings for now + virtual ~wxTreeTraversal() { } + // do traverse the tree: visit all items (recursively by default) under the // given one; return true if all items were traversed or false if the // traversal was aborted because OnVisit returned false @@ -606,9 +611,6 @@ bool wxTreeTraversal::Traverse(const wxTreeItemId& root, bool recursively) void wxTreeCtrl::Init() { - m_imageListNormal = NULL; - m_imageListState = NULL; - m_ownsImageListNormal = m_ownsImageListState = false; m_textCtrl = NULL; m_hasAnyAttr = false; m_dragImage = NULL; @@ -772,9 +774,6 @@ wxTreeCtrl::~wxTreeCtrl() // delete user data to prevent memory leaks // also deletes hidden root node storage. DeleteAllItems(); - - if (m_ownsImageListNormal) delete m_imageListNormal; - if (m_ownsImageListState) delete m_imageListState; } // ---------------------------------------------------------------------------- @@ -833,22 +832,12 @@ void wxTreeCtrl::SetIndent(unsigned int indent) TreeView_SetIndent(GetHwnd(), indent); } -wxImageList *wxTreeCtrl::GetImageList() const -{ - return m_imageListNormal; -} - -wxImageList *wxTreeCtrl::GetStateImageList() const -{ - return m_imageListState; -} - void wxTreeCtrl::SetAnyImageList(wxImageList *imageList, int which) { // no error return - TreeView_SetImageList(GetHwnd(), - imageList ? imageList->GetHIMAGELIST() : 0, - which); + (void) TreeView_SetImageList(GetHwnd(), + imageList ? imageList->GetHIMAGELIST() : 0, + which); } void wxTreeCtrl::SetImageList(wxImageList *imageList) @@ -867,18 +856,6 @@ void wxTreeCtrl::SetStateImageList(wxImageList *imageList) 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, bool recursively) const { @@ -1629,11 +1606,11 @@ size_t wxTreeCtrl::GetSelections(wxArrayTreeItemIds& selections) const // Usual operations // ---------------------------------------------------------------------------- -wxTreeItemId wxTreeCtrl::DoInsertItem(const wxTreeItemId& parent, - wxTreeItemId hInsertAfter, - const wxString& text, - int image, int selectedImage, - wxTreeItemData *data) +wxTreeItemId wxTreeCtrl::DoInsertAfter(const wxTreeItemId& parent, + const wxTreeItemId& hInsertAfter, + const wxString& text, + int image, int selectedImage, + wxTreeItemData *data) { wxCHECK_MSG( parent.IsOk() || !TreeView_GetRoot(GetHwnd()), wxTreeItemId(), @@ -1706,20 +1683,6 @@ wxTreeItemId wxTreeCtrl::DoInsertItem(const wxTreeItemId& parent, // for compatibility only #if WXWIN_COMPATIBILITY_2_4 -wxTreeItemId wxTreeCtrl::InsertItem(const wxTreeItemId& parent, - const wxString& text, - int image, int selImage, - long insertAfter) -{ - return DoInsertItem(parent, wxTreeItemId((void *)insertAfter), text, - image, selImage, NULL); -} - -wxImageList *wxTreeCtrl::GetImageList(int) const -{ - return GetImageList(); -} - void wxTreeCtrl::SetImageList(wxImageList *imageList, int) { SetImageList(imageList); @@ -1750,59 +1713,40 @@ wxTreeItemId wxTreeCtrl::AddRoot(const wxString& text, return TVI_ROOT; } - return DoInsertItem(wxTreeItemId(), wxTreeItemId(), - text, image, selectedImage, data); + return DoInsertAfter(wxTreeItemId(), wxTreeItemId(), + text, image, selectedImage, data); } -wxTreeItemId wxTreeCtrl::PrependItem(const wxTreeItemId& parent, - const wxString& text, - int image, int selectedImage, - wxTreeItemData *data) -{ - return DoInsertItem(parent, TVI_FIRST, - text, image, selectedImage, data); -} - -wxTreeItemId wxTreeCtrl::InsertItem(const wxTreeItemId& parent, - const wxTreeItemId& idPrevious, - const wxString& text, - int image, int selectedImage, - wxTreeItemData *data) -{ - return DoInsertItem(parent, idPrevious, text, image, selectedImage, data); -} - -wxTreeItemId wxTreeCtrl::InsertItem(const wxTreeItemId& parent, - size_t index, - const wxString& text, - int image, int selectedImage, - wxTreeItemData *data) +wxTreeItemId wxTreeCtrl::DoInsertItem(const wxTreeItemId& parent, + size_t index, + const wxString& text, + int image, int selectedImage, + wxTreeItemData *data) { - // find the item from index - wxTreeItemIdValue cookie; - wxTreeItemId idPrev, idCur = GetFirstChild(parent, cookie); - while ( index != 0 && idCur.IsOk() ) + wxTreeItemId idPrev; + if ( index == (size_t)-1 ) { - index--; - - idPrev = idCur; - idCur = GetNextChild(parent, cookie); + // special value: append to the end + idPrev = TVI_LAST; } + else // find the item from index + { + wxTreeItemIdValue cookie; + wxTreeItemId idCur = GetFirstChild(parent, cookie); + while ( index != 0 && idCur.IsOk() ) + { + index--; - // assert, not check: if the index is invalid, we will append the item - // to the end - wxASSERT_MSG( index == 0, _T("bad index in wxTreeCtrl::InsertItem") ); + idPrev = idCur; + idCur = GetNextChild(parent, cookie); + } - return DoInsertItem(parent, idPrev, text, image, selectedImage, data); -} + // assert, not check: if the index is invalid, we will append the item + // to the end + wxASSERT_MSG( index == 0, _T("bad index in wxTreeCtrl::InsertItem") ); + } -wxTreeItemId wxTreeCtrl::AppendItem(const wxTreeItemId& parent, - const wxString& text, - int image, int selectedImage, - wxTreeItemData *data) -{ - return DoInsertItem(parent, TVI_LAST, - text, image, selectedImage, data); + return DoInsertAfter(parent, idPrev, text, image, selectedImage, data); } void wxTreeCtrl::Delete(const wxTreeItemId& item) @@ -1998,16 +1942,6 @@ void wxTreeCtrl::SelectItem(const wxTreeItemId& item, bool select) } } -void wxTreeCtrl::UnselectItem(const wxTreeItemId& item) -{ - SelectItem(item, false); -} - -void wxTreeCtrl::ToggleItemSelection(const wxTreeItemId& item) -{ - SelectItem(item, !IsSelected(item)); -} - void wxTreeCtrl::EnsureVisible(const wxTreeItemId& item) { // no error return @@ -2080,13 +2014,13 @@ void wxTreeCtrl::DoEndEditLabel(bool discardChanges) DeleteTextCtrl(); } -wxTreeItemId wxTreeCtrl::HitTest(const wxPoint& point, int& flags) +wxTreeItemId wxTreeCtrl::DoTreeHitTest(const wxPoint& point, int& flags) { TV_HITTESTINFO hitTestInfo; hitTestInfo.pt.x = (int)point.x; hitTestInfo.pt.y = (int)point.y; - TreeView_HitTest(GetHwnd(), &hitTestInfo); + (void) TreeView_HitTest(GetHwnd(), &hitTestInfo); flags = 0; @@ -2174,12 +2108,6 @@ int CALLBACK wxTreeSortHelper::Compare(LPARAM pItem1, GetIdFromData(tree, pItem2)); } -int wxTreeCtrl::OnCompareItems(const wxTreeItemId& item1, - const wxTreeItemId& item2) -{ - return wxStrcmp(GetItemText(item1), GetItemText(item2)); -} - void wxTreeCtrl::SortChildren(const wxTreeItemId& item) { wxCHECK_RET( item.IsOk(), wxT("invalid tree item") ); @@ -2282,12 +2210,12 @@ WXLRESULT wxTreeCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lPara int x = GET_X_LPARAM(lParam), y = GET_Y_LPARAM(lParam); HTREEITEM htItem = GetItemFromPoint(GetHwnd(), x, y); - + TV_HITTESTINFO tvht; tvht.pt.x = x; tvht.pt.y = y; - - TreeView_HitTest(GetHwnd(), &tvht); + + (void) TreeView_HitTest(GetHwnd(), &tvht); switch ( nMsg ) { @@ -2312,7 +2240,7 @@ WXLRESULT wxTreeCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lPara { m_htClickedItem = (WXHTREEITEM) htItem; m_ptClick = wxPoint(x, y); - + if ( wParam & MK_CONTROL ) { SetFocus(); @@ -2352,7 +2280,7 @@ WXLRESULT wxTreeCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lPara { // avoid doing anything if we click on the only // currently selected item - + SetFocus(); wxArrayTreeItemIds selections; @@ -2406,29 +2334,29 @@ WXLRESULT wxTreeCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lPara tv.hdr.hwndFrom = GetHwnd(); tv.hdr.idFrom = ::GetWindowLong( GetHwnd(), GWL_ID ); tv.hdr.code = TVN_BEGINDRAG; - + tv.itemNew.hItem = HITEM(m_htClickedItem); - + TVITEM tviAux; ZeroMemory(&tviAux, sizeof(tviAux)); tviAux.hItem = HITEM(m_htClickedItem); tviAux.mask = TVIF_STATE | TVIF_PARAM; tviAux.stateMask = 0xffffffff; TreeView_GetItem( GetHwnd(), &tviAux ); - + tv.itemNew.state = tviAux.state; tv.itemNew.lParam = tviAux.lParam; - + tv.ptDrag.x = x; tv.ptDrag.y = y; - + ::SendMessage( pWnd, WM_NOTIFY, tv.hdr.idFrom, (LPARAM)&tv ); } m_htClickedItem.Unset(); } } #endif // __WXWINCE__ - + if ( m_dragImage ) { m_dragImage->Move(wxPoint(x, y)); @@ -3223,14 +3151,4 @@ int wxTreeCtrl::GetState(const wxTreeItemId& node) return STATEIMAGEMASKTOINDEX(tvi.state); } -#if WXWIN_COMPATIBILITY_2_2 - -wxTreeItemId wxTreeCtrl::GetParent(const wxTreeItemId& item) const -{ - return GetItemParent( item ); -} - -#endif // WXWIN_COMPATIBILITY_2_2 - #endif // wxUSE_TREECTRL -