git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68932
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
virtual ~DoJob() { }
// The return value control how the tree-walker tranverse the tree
virtual ~DoJob() { }
// The return value control how the tree-walker tranverse the tree
- // 0: Job done, stop tranverse and return
- // 1: Ignore the current node's subtree and continue
- // 2: Job not done, continue
- enum { OK = 0 , IGR = 1, CONT = 2 };
+ enum
+ {
+ DONE, // Job done, stop traversing and return
+ SKIP_SUBTREE, // Ignore the current node's subtree and continue
+ CONTINUE // Job not done, continue
+ };
+
virtual int operator() ( wxDataViewTreeNode * node ) = 0;
};
virtual int operator() ( wxDataViewTreeNode * node ) = 0;
};
+ case DoJob::SKIP_SUBTREE:
if( current == static_cast<int>(row))
{
ret = node;
if( current == static_cast<int>(row))
{
ret = node;
}
if( node->GetSubTreeCount() + current < static_cast<int>(row) )
{
current += node->GetSubTreeCount();
}
if( node->GetSubTreeCount() + current < static_cast<int>(row) )
{
current += node->GetSubTreeCount();
+ return DoJob::SKIP_SUBTREE;
{
const int index = static_cast<int>(row) - current - 1;
ret = node->GetChildNodes()[index];
{
const int index = static_cast<int>(row) - current - 1;
ret = node->GetChildNodes()[index];
+ return DoJob::CONTINUE;
ret ++;
if( node->GetItem() == item )
{
ret ++;
if( node->GetItem() == item )
{
}
if( node->GetItem() == *m_iter )
{
m_iter++;
}
if( node->GetItem() == *m_iter )
{
m_iter++;
+ return DoJob::CONTINUE;
}
else
{
ret += node->GetSubTreeCount();
}
else
{
ret += node->GetSubTreeCount();
+ return DoJob::SKIP_SUBTREE;