]> git.sesse.net Git - vlc/commitdiff
skins2: transform getNextSibling into getNextSiblingOrUncle
authorErwan Tulou <erwan10@videolan.org>
Tue, 10 Aug 2010 14:01:45 +0000 (16:01 +0200)
committerErwan Tulou <erwan10@videolan.org>
Tue, 10 Aug 2010 16:54:36 +0000 (18:54 +0200)
modules/gui/skins2/utils/var_tree.cpp
modules/gui/skins2/utils/var_tree.hpp

index 66d1460a911b064e30de62cdba9f6ac038e8ccb6..f861298b407bdddfb1f81139ab1bb6598572e8bd 100644 (file)
@@ -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
index 26709e32aae19b84b377fbbefcc8c3e5f5e2a1d1..eda94c0acf2111f69b4f4c0352f7622c3d5c8832 100644 (file)
@@ -105,7 +105,7 @@ public:
     VarTree *parent() { return m_pParent; }
 
     /// Get next sibling
-    Iterator getNextSibling( Iterator );
+    Iterator getNextSiblingOrUncle();
 
     Iterator next_uncle();
     Iterator prev_uncle();