fix handy like jumping in sorted service list
[enigma2.git] / lib / gui / elistbox.cpp
index 28d220a..e2f1c26 100644 (file)
@@ -96,17 +96,16 @@ void eListbox::moveSelection(int dir)
        
                /* now, look wether the current selection is out of screen */
        m_selected = m_content->cursorGet();
-       
-       if (m_selected < m_top)
+
+       while (m_selected < m_top)
        {
                m_top -= m_items_per_page;
                if (m_top < 0)
                        m_top = 0;
-       } else if (m_selected >= m_top + m_items_per_page)
-       {
-                       /* m_top should be always valid here as it's selected */
-               m_top += m_items_per_page;
        }
+       while (m_selected >= m_top + m_items_per_page)
+               /* m_top should be always valid here as it's selected */
+               m_top += m_items_per_page;
 
        if (m_top != oldtop)
                invalidate();
@@ -121,6 +120,14 @@ void eListbox::moveSelection(int dir)
        }
 }
 
+void eListbox::moveSelectionTo(int index)
+{
+       printf("Moving to listbox-entry with index %d\n", index);
+       m_content->cursorHome();
+       m_content->cursorMove(index);
+       moveSelection(justCheck);
+}
+
 int eListbox::event(int event, void *data, void *data2)
 {
        switch (event)