aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2005-05-18 01:54:01 +0000
committerFelix Domke <tmbinc@elitedvb.net>2005-05-18 01:54:01 +0000
commitace6e813777083ae56576433582beb573165e102 (patch)
tree16a2e0d00cb92ba4ca93ed34e8ba9a4f3c705eea
parent181d3463e3545890e0a0c60081e84af67d302614 (diff)
downloadenigma2-ace6e813777083ae56576433582beb573165e102.tar.gz
enigma2-ace6e813777083ae56576433582beb573165e102.zip
- add pageUp/pageDown movements
-rw-r--r--lib/gui/elistbox.cpp30
1 files changed, 26 insertions, 4 deletions
diff --git a/lib/gui/elistbox.cpp b/lib/gui/elistbox.cpp
index 4598fa09..4f799a17 100644
--- a/lib/gui/elistbox.cpp
+++ b/lib/gui/elistbox.cpp
@@ -51,17 +51,39 @@ void eListbox::moveSelection(int dir)
if (!m_content->cursorValid())
m_content->cursorMove(-1);
break;
+ case pageUp:
+ if (m_content->cursorGet() >= m_items_per_page)
+ {
+ m_content->cursorMove(-m_items_per_page);
+ m_top -= m_items_per_page;
+ if (m_top < 0)
+ m_top = 0;
+ } else
+ {
+ m_top = 0;
+ m_content->cursorHome();
+ }
+ break;
case moveTop:
m_content->cursorHome();
m_top = 0; /* align with top, speeds up process */
break;
+
+ case pageDown:
+ m_content->cursorMove(m_items_per_page);
+ if (m_content->cursorValid())
+ break;
+ /* fall through */
case moveEnd:
/* move to last existing one ("end" is already invalid) */
m_content->cursorEnd(); m_content->cursorMove(-1);
-
- m_top = m_content->cursorGet() - m_items_per_page + 1;
- if (m_top < 0)
- m_top = 0;
+ /* current selection invisible? */
+ if (m_top + m_items_per_page <= m_content->cursorGet())
+ {
+ m_top = m_content->cursorGet() - m_items_per_page + 1;
+ if (m_top < 0)
+ m_top = 0;
+ }
break;
case justCheck:
break;