#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 <commctrl.h>
#endif
// ----------------------------------------------------------------------------
// 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
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
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.
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;
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();
}
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)
return TRUE;
}
- private:
+private:
wxArrayTreeItemIds& m_selections;
- } selector(this, selections);
+};
+
+size_t wxTreeCtrl::GetSelections(wxArrayTreeItemIds& selections) const
+{
+ TraverseSelections selector(this, selections);
return selections.GetCount();
}