X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2899e2232750915f4ff37c0ac178fce1b5858fe0..aa3981f2c66ba95a056a6d0dbf983b2d64bc0d84:/src/msw/treectrl.cpp?ds=sidebyside diff --git a/src/msw/treectrl.cpp b/src/msw/treectrl.cpp index cd68918437..d9affa465f 100644 --- a/src/msw/treectrl.cpp +++ b/src/msw/treectrl.cpp @@ -47,10 +47,12 @@ #include "wx/treectrl.h" #ifdef __GNUWIN32__ +#ifndef wxUSE_NORLANDER_HEADERS #include "wx/msw/gnuwin32/extra.h" #endif +#endif -#if (defined(__WIN95__) && !defined(__GNUWIN32__)) || defined(__TWIN32__) +#if (defined(__WIN95__) && !defined(__GNUWIN32__)) || defined(__TWIN32__) || defined(wxUSE_NORLANDER_HEADERS) #include #endif @@ -64,6 +66,7 @@ // ---------------------------------------------------------------------------- // a convenient wrapper around TV_ITEM struct which adds a ctor +#pragma warning( disable : 4097 ) struct wxTreeViewItem : public TV_ITEM { wxTreeViewItem(const wxTreeItemId& item, // the item handle @@ -76,6 +79,7 @@ struct wxTreeViewItem : public TV_ITEM hItem = (HTREEITEM) (WXHTREEITEM) item; } }; +#pragma warning( default : 4097 ) // a class which encapsulates the tree traversal logic: it vists all (unless // OnVisit() returns FALSE) items under the given one @@ -195,17 +199,23 @@ bool wxTreeCtrl::Create(wxWindow *parent, if ( m_windowStyle & wxTR_LINES_AT_ROOT ) wstyle |= TVS_LINESATROOT; -#ifndef __GNUWIN32__ +#if !defined( __GNUWIN32__ ) && !defined( __BORLANDC__ ) && !defined(wxUSE_NORLANDER_HEADERS) // we emulate the multiple selection tree controls by using checkboxes: set // up the image list we need for this if we do have multiple selections +#if !defined(__VISUALC__) || (__VISUALC__ != 1010) if ( m_windowStyle & wxTR_MULTIPLE ) - wstyle |= TVS_CHECKBOXES; + wstyle |= TVS_CHECKBOXES; +#endif #endif // Create the tree control. if ( !MSWCreateControl(WC_TREEVIEW, wstyle) ) return FALSE; + // the treectrl with any other background looks ugly because the items + // background is white anyhow + SetBackgroundColour(*wxWHITE); + // VZ: this is some experimental code which may be used to get the // TVS_CHECKBOXES style functionality for comctl32.dll < 4.71. // AFAIK, the standard DLL does about the same thing anyhow. @@ -339,15 +349,14 @@ void wxTreeCtrl::SetStateImageList(wxImageList *imageList) SetAnyImageList(m_imageListState = imageList, TVSIL_STATE); } -size_t wxTreeCtrl::GetChildrenCount(const wxTreeItemId& item, - bool recursively) const +// internal class for counting tree items + +class TraverseCounter : public wxTreeTraversal { - class TraverseCounter : public wxTreeTraversal - { - public: +public: TraverseCounter(const wxTreeCtrl *tree, const wxTreeItemId& root, - bool recursively) + bool recursively) : wxTreeTraversal(tree) { m_count = 0; @@ -364,9 +373,15 @@ size_t wxTreeCtrl::GetChildrenCount(const wxTreeItemId& item, size_t GetCount() const { return m_count; } - private: +private: size_t m_count; - } counter(this, item, recursively); +}; + + +size_t wxTreeCtrl::GetChildrenCount(const wxTreeItemId& item, + bool recursively) const +{ + TraverseCounter counter(this, item, recursively); return counter.GetCount(); } @@ -639,11 +654,11 @@ void wxTreeCtrl::SetItemCheck(const wxTreeItemId& item, bool check) DoSetItem(&tvItem); } -size_t wxTreeCtrl::GetSelections(wxArrayTreeItemIds& selections) const +// internal class for getting the selected + +class TraverseSelections : public wxTreeTraversal { - class TraverseSelections : public wxTreeTraversal - { - public: +public: TraverseSelections(const wxTreeCtrl *tree, wxArrayTreeItemIds& selections) : wxTreeTraversal(tree), m_selections(selections) @@ -663,9 +678,13 @@ size_t wxTreeCtrl::GetSelections(wxArrayTreeItemIds& selections) const return TRUE; } - private: +private: wxArrayTreeItemIds& m_selections; - } selector(this, selections); +}; + +size_t wxTreeCtrl::GetSelections(wxArrayTreeItemIds& selections) const +{ + TraverseSelections selector(this, selections); return selections.GetCount(); }