git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add missing files, add ability to specify table_id mask and table_id ext mask
[enigma2.git]
/
lib
/
gui
/
elistbox.cpp
diff --git
a/lib/gui/elistbox.cpp
b/lib/gui/elistbox.cpp
index 4598fa091e8a696291dba216d5b82cb428690401..4f799a176cc60b26c664c7402bf1ef0808f0dfe8 100644
(file)
--- 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;
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 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);
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;
break;
case justCheck:
break;