#include "wx/treectrl.h"
#ifndef WX_PRECOMP
+ #include "wx/msw/wrapcctl.h" // include <commctrl.h> "properly"
+ #include "wx/msw/missing.h"
#include "wx/dynarray.h"
#include "wx/log.h"
#include "wx/app.h"
#include "wx/msw/private.h"
-// include <commctrl.h> "properly"
-#include "wx/msw/wrapcctl.h"
-
-#include "wx/msw/missing.h"
-
// Set this to 1 to be _absolutely_ sure that repainting will work for all
// comctl32.dll versions
#define wxUSE_COMCTL32_SAFELY 0
{
public:
wxTreeItemParam()
- : m_item(NULL),
- m_data(NULL)
{
+ m_data = NULL;
+
for ( size_t n = 0; n < WXSIZEOF(m_images); n++ )
{
m_images[n] = -1;
virtual bool OnVisit(const wxTreeItemId& item)
{
+ const wxTreeCtrl * const tree = GetTree();
+
// can't visit a virtual node.
- if ( (GetTree()->GetRootItem() == item) && (GetTree()->GetWindowStyle() & wxTR_HIDE_ROOT))
+ if ( (tree->GetRootItem() == item) && tree->HasFlag(wxTR_HIDE_ROOT) )
{
return true;
}
#if wxUSE_CHECKBOXES_IN_MULTI_SEL_TREE
- if ( GetTree()->IsItemChecked(item) )
+ if ( tree->IsItemChecked(item) )
#else
- if ( ::IsItemSelected(GetHwndOf(GetTree()), HITEM(item)) )
+ if ( ::IsItemSelected(GetHwndOf(tree), HITEM(item)) )
#endif
{
m_selections.Add(item);
// Item access
// ----------------------------------------------------------------------------
+bool wxTreeCtrl::IsHiddenRoot(const wxTreeItemId& item) const
+{
+ return HITEM(item) == TVI_ROOT && HasFlag(wxTR_HIDE_ROOT);
+}
+
wxString wxTreeCtrl::GetItemText(const wxTreeItemId& item) const
{
wxCHECK_MSG( item.IsOk(), wxEmptyString, wxT("invalid tree item") );
{
wxCHECK_MSG( item.IsOk(), -1, wxT("invalid tree item") );
- if ( (HITEM(item) == TVI_ROOT) && (m_windowStyle & wxTR_HIDE_ROOT) )
+ if ( IsHiddenRoot(item) )
{
// no images for hidden root item
return -1;
wxT("invalid image index"));
- if ( (HITEM(item) == TVI_ROOT) && (m_windowStyle & wxTR_HIDE_ROOT) )
+ if ( IsHiddenRoot(item) )
{
// no images for hidden root item
return;
wxTreeItemData *data)
{
- if ( m_windowStyle & wxTR_HIDE_ROOT )
+ if ( HasFlag(wxTR_HIDE_ROOT) )
{
// create a virtual root item, the parent for all the others
wxTreeItemParam *param = new wxTreeItemParam;
wxT("Unknown flag in wxTreeCtrl::DoExpand") );
// A hidden root can be neither expanded nor collapsed.
- wxCHECK_RET( !(m_windowStyle & wxTR_HIDE_ROOT) || (HITEM(item) != TVI_ROOT),
+ wxCHECK_RET( !IsHiddenRoot(item),
wxT("Can't expand/collapse hidden root node!") );
// TreeView_Expand doesn't send TVN_ITEMEXPAND(ING) messages, so we must
void wxTreeCtrl::EnsureVisible(const wxTreeItemId& item)
{
+ wxCHECK_RET( !IsHiddenRoot(item), _T("can't show hidden root item") );
+
// no error return
TreeView_EnsureVisible(GetHwnd(), HITEM(item));
}
GetBoundingRect(event.m_item, ItemRect, false);
// If the point is inside the bounding rectangle, use it as the click position.
// This should be the case for WM_CONTEXTMENU as the result of a right-click
- if (ItemRect.Inside(MenuPoint))
+ if (ItemRect.Contains(MenuPoint))
{
event.m_pointDrag = MenuPoint;
}