mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Fixed handling page up/down in menu lists in case there are several non selectable items in a row
This commit is contained in:
parent
903a2d5850
commit
7a990fcf88
@ -1239,6 +1239,8 @@ Milos Kapoun <m.kapoun@cra.cz>
|
|||||||
Udo Richter <udo_richter@gmx.de>
|
Udo Richter <udo_richter@gmx.de>
|
||||||
for refining the formula for making volume control more linear
|
for refining the formula for making volume control more linear
|
||||||
for fixing handling lifetime when deciding whether to delete a recording
|
for fixing handling lifetime when deciding whether to delete a recording
|
||||||
|
for reporting a problem in handling page up/down in menu lists in case there are
|
||||||
|
several non selectable items in a row
|
||||||
|
|
||||||
Sven Kreiensen <svenk@kammer.uni-hannover.de>
|
Sven Kreiensen <svenk@kammer.uni-hannover.de>
|
||||||
for his help in keeping 'channels.conf.terr' up to date
|
for his help in keeping 'channels.conf.terr' up to date
|
||||||
|
4
HISTORY
4
HISTORY
@ -3578,7 +3578,7 @@ Video Disk Recorder Revision History
|
|||||||
- Added cThread::SetPriority() and using it in cSectionHandler::Action() to
|
- Added cThread::SetPriority() and using it in cSectionHandler::Action() to
|
||||||
reduce the priority of the section handler threads (as suggested by Georg Acher).
|
reduce the priority of the section handler threads (as suggested by Georg Acher).
|
||||||
|
|
||||||
2005-06-11: Version 1.3.26
|
2005-06-12: Version 1.3.26
|
||||||
|
|
||||||
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
|
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
|
||||||
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
|
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
|
||||||
@ -3601,3 +3601,5 @@ Video Disk Recorder Revision History
|
|||||||
- Removed an unnecessary #include from osd.c (thanks to Wolfgang Rohdewald).
|
- Removed an unnecessary #include from osd.c (thanks to Wolfgang Rohdewald).
|
||||||
- Fixed dropping EPG events that have a zero start time or duration, in case it's
|
- Fixed dropping EPG events that have a zero start time or duration, in case it's
|
||||||
an NVOD event (thanks to Chris Warren).
|
an NVOD event (thanks to Chris Warren).
|
||||||
|
- Fixed handling page up/down in menu lists in case there are several non selectable
|
||||||
|
items in a row (thanks to Udo Richter for reporting this one).
|
||||||
|
59
osdbase.c
59
osdbase.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: osdbase.c 1.15 2005/01/07 16:16:41 kls Exp $
|
* $Id: osdbase.c 1.16 2005/06/12 09:55:56 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "osdbase.h"
|
#include "osdbase.h"
|
||||||
@ -258,7 +258,8 @@ void cOsdMenu::CursorUp(void)
|
|||||||
{
|
{
|
||||||
if (current > 0) {
|
if (current > 0) {
|
||||||
int tmpCurrent = current;
|
int tmpCurrent = current;
|
||||||
while (--tmpCurrent >= 0 && !SelectableItem(tmpCurrent));
|
while (--tmpCurrent >= 0 && !SelectableItem(tmpCurrent))
|
||||||
|
;
|
||||||
if (tmpCurrent < 0)
|
if (tmpCurrent < 0)
|
||||||
return;
|
return;
|
||||||
if (tmpCurrent >= first)
|
if (tmpCurrent >= first)
|
||||||
@ -282,7 +283,8 @@ void cOsdMenu::CursorDown(void)
|
|||||||
|
|
||||||
if (current < last) {
|
if (current < last) {
|
||||||
int tmpCurrent = current;
|
int tmpCurrent = current;
|
||||||
while (++tmpCurrent <= last && !SelectableItem(tmpCurrent));
|
while (++tmpCurrent <= last && !SelectableItem(tmpCurrent))
|
||||||
|
;
|
||||||
if (tmpCurrent > last)
|
if (tmpCurrent > last)
|
||||||
return;
|
return;
|
||||||
if (tmpCurrent <= lastOnScreen)
|
if (tmpCurrent <= lastOnScreen)
|
||||||
@ -306,34 +308,63 @@ void cOsdMenu::CursorDown(void)
|
|||||||
|
|
||||||
void cOsdMenu::PageUp(void)
|
void cOsdMenu::PageUp(void)
|
||||||
{
|
{
|
||||||
|
int oldCurrent = current;
|
||||||
|
int oldFirst = first;
|
||||||
current -= displayMenuItems;
|
current -= displayMenuItems;
|
||||||
first -= displayMenuItems;
|
first -= displayMenuItems;
|
||||||
|
int last = Count() - 1;
|
||||||
|
if (current < 0)
|
||||||
|
current = 0;
|
||||||
if (first < 0)
|
if (first < 0)
|
||||||
first = current = 0;
|
first = 0;
|
||||||
if (!SelectableItem(current)) {
|
int tmpCurrent = current;
|
||||||
current -= (current > 0) ? 1 : -1;
|
while (!SelectableItem(tmpCurrent) && --tmpCurrent >= 0)
|
||||||
first = min(first, current - 1);
|
;
|
||||||
|
if (tmpCurrent < 0) {
|
||||||
|
tmpCurrent = current;
|
||||||
|
while (++tmpCurrent <= last && !SelectableItem(tmpCurrent))
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
current = tmpCurrent <= last ? tmpCurrent : -1;
|
||||||
|
if (current >= 0) {
|
||||||
|
if (current < first)
|
||||||
|
first = current;
|
||||||
|
else if (current - first >= displayMenuItems)
|
||||||
|
first = current - displayMenuItems + 1;
|
||||||
|
}
|
||||||
|
if (current != oldCurrent || first != oldFirst) {
|
||||||
Display();
|
Display();
|
||||||
DisplayCurrent(true);
|
DisplayCurrent(true);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void cOsdMenu::PageDown(void)
|
void cOsdMenu::PageDown(void)
|
||||||
{
|
{
|
||||||
|
int oldCurrent = current;
|
||||||
|
int oldFirst = first;
|
||||||
current += displayMenuItems;
|
current += displayMenuItems;
|
||||||
first += displayMenuItems;
|
first += displayMenuItems;
|
||||||
int count = Count();
|
int last = Count() - 1;
|
||||||
if (current > count - 1) {
|
int tmpCurrent = current;
|
||||||
current = count - 1;
|
while (!SelectableItem(tmpCurrent) && ++tmpCurrent <= last)
|
||||||
first = max(0, count - displayMenuItems);
|
;
|
||||||
|
if (tmpCurrent > last) {
|
||||||
|
tmpCurrent = current;
|
||||||
|
while (--tmpCurrent >= 0 && !SelectableItem(tmpCurrent))
|
||||||
|
;
|
||||||
}
|
}
|
||||||
if (!SelectableItem(current)) {
|
current = tmpCurrent > 0 ? tmpCurrent : -1;
|
||||||
current += (current < count - 1) ? 1 : -1;
|
if (current >= 0) {
|
||||||
first = max(first, current - displayMenuItems);
|
if (current < first)
|
||||||
|
first = current;
|
||||||
|
else if (current - first >= displayMenuItems)
|
||||||
|
first = current - displayMenuItems + 1;
|
||||||
}
|
}
|
||||||
|
if (current != oldCurrent || first != oldFirst) {
|
||||||
Display();
|
Display();
|
||||||
DisplayCurrent(true);
|
DisplayCurrent(true);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void cOsdMenu::Mark(void)
|
void cOsdMenu::Mark(void)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user