diff options
author | louis <louis.braun@gmx.de> | 2015-05-14 06:45:03 +0200 |
---|---|---|
committer | louis <louis.braun@gmx.de> | 2015-05-14 06:45:03 +0200 |
commit | f33354ba5aa51208b9dc6fcf17b346ebf86355d3 (patch) | |
tree | a7d6aa06a78cf4907feb2e62a6ef85e7e0b0e9ed | |
parent | 57999a442f1399c0cd56e32427adc67b033aff49 (diff) | |
download | vdr-plugin-skindesigner-f33354ba5aa51208b9dc6fcf17b346ebf86355d3.tar.gz vdr-plugin-skindesigner-f33354ba5aa51208b9dc6fcf17b346ebf86355d3.tar.bz2 |
fixed bug that detached viewelements were not cleared correctly
-rw-r--r-- | HISTORY | 4 | ||||
-rw-r--r-- | views/displaychannelview.c | 6 | ||||
-rw-r--r-- | views/displayviewelements.h | 1 | ||||
-rw-r--r-- | views/view.c | 9 | ||||
-rw-r--r-- | views/view.h | 1 |
5 files changed, 19 insertions, 2 deletions
@@ -316,3 +316,7 @@ Version 0.4.5 - added {numtimers} Token to lastrecordings viewelement - fixed time display bug in displaymenurecordings - added token {watched} to displaymenurecordings +- fixed bug that scrapercontent in displaychannel was not + updated if detached +- fixed bug that detached viewelements were not cleared + correctly
\ No newline at end of file diff --git a/views/displaychannelview.c b/views/displaychannelview.c index bcb7ad8..986ee39 100644 --- a/views/displaychannelview.c +++ b/views/displaychannelview.c @@ -354,14 +354,16 @@ void cDisplayChannelView::DrawScraperContent(const cEvent *event) { } if (DetachViewElement(veScraperContent)) { - cViewElement *viewElement = GetViewElement(veScraperContent); + cViewElementScraperContent *viewElement = dynamic_cast<cViewElementScraperContent*>(GetViewElement(veScraperContent)); if (!viewElement) { viewElement = new cViewElementScraperContent(event, ctPosterBanner, tmplView->GetViewElement(veScraperContent)); AddViewElement(veScraperContent, viewElement); viewElement->Start(); } else { - if (!viewElement->Starting()) + if (!viewElement->Starting()) { + viewElement->SetEvent(event); viewElement->Render(); + } } } else { map < string, string > stringTokens; diff --git a/views/displayviewelements.h b/views/displayviewelements.h index cb02c39..0dcd45b 100644 --- a/views/displayviewelements.h +++ b/views/displayviewelements.h @@ -27,6 +27,7 @@ private: public: cViewElementScraperContent(const cEvent *event, ScraperContentType type, cTemplateViewElement *tmplViewElement); virtual ~cViewElementScraperContent() {}; + void SetEvent(const cEvent *event) { this->event = event; }; bool Render(void); }; diff --git a/views/view.c b/views/view.c index 125f5c3..2f28c1f 100644 --- a/views/view.c +++ b/views/view.c @@ -183,6 +183,11 @@ void cView::DrawViewElement(eViewElement ve, map <string,string> *stringTokens, }
void cView::ClearViewElement(eViewElement ve) {
+ cViewElement *detachedVE = GetViewElement(ve);
+ if (detachedVE) {
+ detachedVE->Clear();
+ return;
+ }
cTemplateViewElement *viewElement = NULL;
int currentAnimCat = ve;
if (tmplViewElement) {
@@ -1103,6 +1108,10 @@ bool cViewElement::Render(void) { return true;
}
+void cViewElement::Clear(void) {
+ ClearViewElement(ve);
+}
+
void cViewElement::Action(void) {
DoSleep(delay);
if (!Running())
diff --git a/views/view.h b/views/view.h index 7b85a6c..91af9ec 100644 --- a/views/view.h +++ b/views/view.h @@ -95,6 +95,7 @@ public: virtual ~cViewElement();
void SetCallback(eViewElement ve, bool (cViewHelpers::*SetTokens)(bool, stringmap&, intmap&)) { this->ve = ve; this->SetTokens = SetTokens; };
virtual bool Render(void);
+ void Clear(void);
bool Starting(void) { return Running(); };
};
|