Fixed setting current menu item if the first one is non-selectable; cOsdItem::cOsdItem() now has a 'Selectable' parameter

This commit is contained in:
Klaus Schmidinger 2005-10-02 09:57:52 +02:00
parent ba24e93d82
commit 704e17859f
3 changed files with 11 additions and 6 deletions

View File

@ -3866,3 +3866,5 @@ Video Disk Recorder Revision History
Schlüßler). Schlüßler).
- Added a check against MAXOSDAREAS in cOsd::CanHandleAreas() (reported by Udo - Added a check against MAXOSDAREAS in cOsd::CanHandleAreas() (reported by Udo
Richter). Richter).
- Fixed setting current menu item if the first one is non-selectable.
- cOsdItem::cOsdItem() now has a 'Selectable' parameter.

View File

@ -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.20 2005/06/18 10:30:51 kls Exp $ * $Id: osdbase.c 1.21 2005/10/02 09:23:10 kls Exp $
*/ */
#include "osdbase.h" #include "osdbase.h"
@ -25,12 +25,12 @@ cOsdItem::cOsdItem(eOSState State)
fresh = true; fresh = true;
} }
cOsdItem::cOsdItem(const char *Text, eOSState State) cOsdItem::cOsdItem(const char *Text, eOSState State, bool Selectable)
{ {
text = NULL; text = NULL;
offset = -1; offset = -1;
state = State; state = State;
selectable = true; selectable = Selectable;
fresh = true; fresh = true;
SetText(Text); SetText(Text);
} }
@ -196,8 +196,11 @@ void cOsdMenu::Display(void)
int count = Count(); int count = Count();
if (count > 0) { if (count > 0) {
int ni = 0; int ni = 0;
for (cOsdItem *item = First(); item; item = Next(item)) for (cOsdItem *item = First(); item; item = Next(item)) {
cStatus::MsgOsdItem(item->Text(), ni++); cStatus::MsgOsdItem(item->Text(), ni++);
if (current < 0 && item->Selectable())
current = item->Index();
}
if (current < 0) if (current < 0)
current = 0; // just for safety - there HAS to be a current item! current = 0; // just for safety - there HAS to be a current item!
if (current - first >= displayMenuItems || current < first) { if (current - first >= displayMenuItems || current < first) {

View File

@ -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.h 1.11 2005/06/12 10:46:34 kls Exp $ * $Id: osdbase.h 1.12 2005/10/02 09:18:20 kls Exp $
*/ */
#ifndef __OSDBASE_H #ifndef __OSDBASE_H
@ -56,7 +56,7 @@ protected:
bool fresh; bool fresh;
public: public:
cOsdItem(eOSState State = osUnknown); cOsdItem(eOSState State = osUnknown);
cOsdItem(const char *Text, eOSState State = osUnknown); cOsdItem(const char *Text, eOSState State = osUnknown, bool Selectable = true);
virtual ~cOsdItem(); virtual ~cOsdItem();
bool Selectable(void) { return selectable; } bool Selectable(void) { return selectable; }
void SetText(const char *Text, bool Copy = true); void SetText(const char *Text, bool Copy = true);