From f1d5367a53b949b47c68b75c48cb5bb54ca0112c Mon Sep 17 00:00:00 2001 From: louis Date: Fri, 3 Apr 2015 15:42:08 +0200 Subject: [PATCH] fixed bug that time was not correctly drawn if a submenu implements its own time display --- HISTORY | 2 ++ skins/blackhole/xmlfiles/displaymenudetailepg.xml | 3 +-- views/displaymenurootview.c | 10 ++++++++-- views/displaymenurootview.h | 1 + views/displaymenuview.c | 3 ++- views/displaymenuview.h | 2 +- 6 files changed, 15 insertions(+), 6 deletions(-) diff --git a/HISTORY b/HISTORY index 05138af..1c7419a 100644 --- a/HISTORY +++ b/HISTORY @@ -268,3 +268,5 @@ Version 0.3.4 Version 0.4.0 +- fixed bug that time was not correctly drawn if a submenu implements + its own time display diff --git a/skins/blackhole/xmlfiles/displaymenudetailepg.xml b/skins/blackhole/xmlfiles/displaymenudetailepg.xml index 672938c..c5e92a4 100644 --- a/skins/blackhole/xmlfiles/displaymenudetailepg.xml +++ b/skins/blackhole/xmlfiles/displaymenudetailepg.xml @@ -5,8 +5,7 @@ - - + diff --git a/views/displaymenurootview.c b/views/displaymenurootview.c index 3a5ee90..311a1e5 100644 --- a/views/displaymenurootview.c +++ b/views/displaymenurootview.c @@ -29,6 +29,7 @@ cDisplayMenuRootView::cDisplayMenuRootView(cTemplateView *rootView) : cView(root defaultHeaderDrawn = false; defaultButtonsDrawn = false; defaultDateTimeDrawn = false; + defaultTimeDrawn = false; defaultMessageDrawn = false; defaultSortmodeDrawn = false; DeleteOsdOnExit(); @@ -364,6 +365,8 @@ void cDisplayMenuRootView::ClearRootView(void) { ClearViewElement(veButtons); if (defaultDateTimeDrawn) ClearViewElement(veDateTime); + if (defaultTimeDrawn) + ClearViewElement(veTime); if (defaultMessageDrawn) ClearViewElement(veMessage); if (defaultSortmodeDrawn) @@ -468,9 +471,12 @@ bool cDisplayMenuRootView::RenderDynamicElements(void) { if (!view) return false; bool updated = false; - if (view->DrawTime()) { + bool implemented = false; + if (view->DrawTime(implemented)) { + defaultTimeDrawn = false; updated = true; - } else if (DrawTime()) { + } else if (!implemented && DrawTime()) { + defaultTimeDrawn = true; updated = true; } if (view->DrawDynamicViewElements()){ diff --git a/views/displaymenurootview.h b/views/displaymenurootview.h index 3ec009f..4a250bc 100644 --- a/views/displaymenurootview.h +++ b/views/displaymenurootview.h @@ -34,6 +34,7 @@ private: bool defaultHeaderDrawn; bool defaultButtonsDrawn; bool defaultDateTimeDrawn; + bool defaultTimeDrawn; bool defaultMessageDrawn; bool defaultSortmodeDrawn; void DrawBackground(void); diff --git a/views/displaymenuview.c b/views/displaymenuview.c index 60f79f5..3056cd5 100644 --- a/views/displaymenuview.c +++ b/views/displaymenuview.c @@ -63,11 +63,12 @@ bool cDisplayMenuView::DrawDateTime(void) { return true; } -bool cDisplayMenuView::DrawTime(void) { +bool cDisplayMenuView::DrawTime(bool &implemented) { if (!ExecuteViewElement(veTime)) { return false; } + implemented = true; map < string, string > stringTokens; map < string, int > intTokens; diff --git a/views/displaymenuview.h b/views/displaymenuview.h index d0d4b44..bddfafa 100644 --- a/views/displaymenuview.h +++ b/views/displaymenuview.h @@ -38,7 +38,7 @@ public: bool DrawBackground(void); virtual bool DrawHeader(void); bool DrawDateTime(void); - bool DrawTime(void); + bool DrawTime(bool &implemented); bool DrawColorButtons(void); bool DrawMessage(eMessageType type, const char *text); void DrawScrollbar(int numMax, int numDisplayed, int offset);