fix handy like jumping in sorted service list
[enigma2.git] / lib / gui / elistbox.cpp
index 873cc937cb30807aaf430cd585c4d9e8f52360fe..e2f1c26f878691063247a066fe25aa18b36a2d7f 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();
        
                /* 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;
        {
                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();
 
        if (m_top != oldtop)
                invalidate();
@@ -124,7 +123,9 @@ void eListbox::moveSelection(int dir)
 void eListbox::moveSelectionTo(int index)
 {
        printf("Moving to listbox-entry with index %d\n", index);
 void eListbox::moveSelectionTo(int index)
 {
        printf("Moving to listbox-entry with index %d\n", index);
-       // TODO: implement it
+       m_content->cursorHome();
+       m_content->cursorMove(index);
+       moveSelection(justCheck);
 }
 
 int eListbox::event(int event, void *data, void *data2)
 }
 
 int eListbox::event(int event, void *data, void *data2)