From 28685f98956404b42766417ba71df6a5a3030ebf Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Mon, 23 Apr 2012 09:47:26 +0200 Subject: [PATCH] A cOsdMenu can now handle skins that display different numbers of items in the various menu categories --- HISTORY | 2 ++ osdbase.c | 6 +++--- osdbase.h | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/HISTORY b/HISTORY index eae8d412..7bdd0285 100644 --- a/HISTORY +++ b/HISTORY @@ -7079,3 +7079,5 @@ Video Disk Recorder Revision History compatibility, the default skins "Classic VDR", "ST:TNG Panels" and "Text mode" (i.e. curses) have been changed to behave like before. Other skins may want to display the disk usage in totally different ways. +- A cOsdMenu can now handle skins that display different numbers of items in the + various menu categories. diff --git a/osdbase.c b/osdbase.c index 27d57588..37437308 100644 --- a/osdbase.c +++ b/osdbase.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: osdbase.c 2.5 2012/04/08 11:19:46 kls Exp $ + * $Id: osdbase.c 2.6 2012/04/23 09:41:22 kls Exp $ */ #include "osdbase.h" @@ -72,13 +72,13 @@ void cOsdObject::Show(void) cSkinDisplayMenu *cOsdMenu::displayMenu = NULL; int cOsdMenu::displayMenuCount = 0; -int cOsdMenu::displayMenuItems = 0;//XXX dynamic??? cOsdMenu::cOsdMenu(const char *Title, int c0, int c1, int c2, int c3, int c4) { isMenu = true; digit = 0; hasHotkeys = false; + displayMenuItems = 0; title = NULL; menuCategory = mcUnknown; SetTitle(Title); @@ -116,7 +116,6 @@ void cOsdMenu::SetDisplayMenu(void) delete displayMenu; } displayMenu = Skins.Current()->DisplayMenu(); - displayMenuItems = displayMenu->MaxItems(); } const char *cOsdMenu::hk(const char *s) @@ -220,6 +219,7 @@ void cOsdMenu::Display(void) cStatus::MsgOsdClear(); if (menuCategory != displayMenu->MenuCategory()) displayMenu->SetMenuCategory(menuCategory); + displayMenuItems = displayMenu->MaxItems(); displayMenu->SetTabs(cols[0], cols[1], cols[2], cols[3], cols[4]);//XXX displayMenu->SetTitle(title); cStatus::MsgOsdTitle(title); diff --git a/osdbase.h b/osdbase.h index 4d8901ee..a2e9914a 100644 --- a/osdbase.h +++ b/osdbase.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: osdbase.h 2.3 2012/04/08 11:18:38 kls Exp $ + * $Id: osdbase.h 2.4 2012/04/23 09:40:07 kls Exp $ */ #ifndef __OSDBASE_H @@ -86,7 +86,7 @@ class cOsdMenu : public cOsdObject, public cList { private: static cSkinDisplayMenu *displayMenu; static int displayMenuCount; - static int displayMenuItems; + int displayMenuItems; char *title; int cols[cSkinDisplayMenu::MaxTabs]; int first, current, marked;