Implemented page mode for menus

This commit is contained in:
Klaus Schmidinger 2000-07-26 17:42:48 +02:00
parent 2260fc9615
commit 59237584e9
3 changed files with 25 additions and 5 deletions

View File

@ -9,3 +9,6 @@ Carsten Koch <Carsten.Koch@icem.de>
Plamen Ganev <pganev@com-it.net>
for fixing the frequency offset for Hotbird channels
for adding the 'xtvrc2vdr' tool (see Tools/xtvrc2vdr)
Heino Goldenstein <heino.goldenstein@microplex.de>
for modifying scrolling through lists to make it page up and down

View File

@ -99,3 +99,8 @@ Video Disk Recorder Revision History
pressing "Ok". The summary field can only be filled in directly by editing
the 'timers.conf' file with a text editor, or by defining/modifying the timer
via the SVDRP interface.
2000-07-26:
- When scrolling through a list it now moves a full page up or down when the
cursor reaches the top or bottom of the menu (thanks to Heino Goldenstein!).

22
osd.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: osd.c 1.4 2000/04/24 09:44:31 kls Exp $
* $Id: osd.c 1.5 2000/07/26 17:35:09 kls Exp $
*/
#include "osd.h"
@ -166,14 +166,20 @@ void cOsdMenu::CursorUp(void)
{
if (current > 0) {
DisplayCurrent(false);
if (--current < first) {
if (current == first) {
first -= MAXOSDITEMS;
if (first < 0)
first = 0;
if (current - MAXOSDITEMS > 0)
current -= MAXOSDITEMS;
else
current--;
Display();
}
else
else {
current--;
DisplayCurrent(true);
}
}
}
@ -182,14 +188,20 @@ void cOsdMenu::CursorDown(void)
int count = Count();
if (current < count - 1) {
DisplayCurrent(false);
if (++current >= first + MAXOSDITEMS) {
if (current == first + MAXOSDITEMS - 1) {
first += MAXOSDITEMS;
if (first > count - MAXOSDITEMS)
first = count - MAXOSDITEMS;
if (current + MAXOSDITEMS < count)
current += MAXOSDITEMS;
else
current++;
Display();
}
else
else {
current++;
DisplayCurrent(true);
}
}
}