From: Erwan Tulou Date: Tue, 10 Aug 2010 14:01:45 +0000 (+0200) Subject: skins2: transform getNextSibling into getNextSiblingOrUncle X-Git-Tag: 1.2.0-pre1~5477 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=cf79a31cfbcca646a9d9a440d2ceba68c3945fe2;p=vlc skins2: transform getNextSibling into getNextSiblingOrUncle --- diff --git a/modules/gui/skins2/utils/var_tree.cpp b/modules/gui/skins2/utils/var_tree.cpp index 66d1460a91..f861298b40 100644 --- a/modules/gui/skins2/utils/var_tree.cpp +++ b/modules/gui/skins2/utils/var_tree.cpp @@ -111,21 +111,29 @@ VarTree::ConstIterator VarTree::operator[]( int n ) const return it; } -VarTree::Iterator VarTree::getNextSibling( VarTree::Iterator current ) +VarTree::Iterator VarTree::getNextSiblingOrUncle() { - VarTree *p_parent = current->parent(); - if( p_parent && current != p_parent->end() ) + VarTree *p_parent = parent(); + if( p_parent ) { - Iterator it = current->parent()->begin(); - while( it != p_parent->end() && it != current ) it++; + Iterator it = p_parent->begin(); + while( it != p_parent->end() && &(*it) != this ) ++it; if( it != p_parent->end() ) { - it++; - return it; + Iterator current = it; + ++it; + if( it != p_parent->end() ) + return it; + else + return current->next_uncle(); + } + else + { + msg_Err( getIntf(), "should never occur" ); + return end(); } - return root()->end(); } - return root()->end(); + return end(); } /* find iterator to next ancestor diff --git a/modules/gui/skins2/utils/var_tree.hpp b/modules/gui/skins2/utils/var_tree.hpp index 26709e32aa..eda94c0acf 100644 --- a/modules/gui/skins2/utils/var_tree.hpp +++ b/modules/gui/skins2/utils/var_tree.hpp @@ -105,7 +105,7 @@ public: VarTree *parent() { return m_pParent; } /// Get next sibling - Iterator getNextSibling( Iterator ); + Iterator getNextSiblingOrUncle(); Iterator next_uncle(); Iterator prev_uncle();