diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2005-10-15 23:52:16 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2005-10-15 23:52:16 +0000 |
| commit | 35278519b9b44c9543126e06841b1cfb8510eb82 (patch) | |
| tree | f3a5cc5c5f2a5d802980b8f4937d48fb38ba8117 /lib/gui/ewidgetdesktop.cpp | |
| parent | b6592b47fa1932132a67a3beabcce7c96856d211 (diff) | |
| download | enigma2-35278519b9b44c9543126e06841b1cfb8510eb82.tar.gz enigma2-35278519b9b44c9543126e06841b1cfb8510eb82.zip | |
fix: invalidate in non-visible widget invalidated visible stuff
Diffstat (limited to 'lib/gui/ewidgetdesktop.cpp')
| -rw-r--r-- | lib/gui/ewidgetdesktop.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/gui/ewidgetdesktop.cpp b/lib/gui/ewidgetdesktop.cpp index dcc2ef60..fb0f39dd 100644 --- a/lib/gui/ewidgetdesktop.cpp +++ b/lib/gui/ewidgetdesktop.cpp @@ -66,6 +66,8 @@ void eWidgetDesktop::calcWidgetClipRegion(eWidget *widget, gRegion &parent_visib for (ePtrList<eWidget>::iterator i(widget->m_childs.begin()); i != widget->m_childs.end(); ++i) if (i->m_vis & eWidget::wVisShow) calcWidgetClipRegion(*i, widget->m_visible_region); + else + clearVisibility(*i); } void eWidgetDesktop::recalcClipRegions(eWidget *root) @@ -79,7 +81,10 @@ void eWidgetDesktop::recalcClipRegions(eWidget *root) for (ePtrList<eWidget>::iterator i(m_root.begin()); i != m_root.end(); ++i) { if (!(i->m_vis & eWidget::wVisShow)) + { + clearVisibility(i); continue; + } gRegion visible_before = i->m_visible_with_childs; @@ -94,10 +99,11 @@ void eWidgetDesktop::recalcClipRegions(eWidget *root) gRegion redraw = (background_before - m_screen.m_background_region) | (m_screen.m_background_region - background_before); invalidate(redraw); - } else + } else if (m_comp_mode == cmBuffered) { if (!root->m_vis & eWidget::wVisShow) { + clearVisibility(root); removeBufferForWidget(root); return; } @@ -387,3 +393,10 @@ void eWidgetDesktop::notify() { redrawComposition(1); } + +void eWidgetDesktop::clearVisibility(eWidget *widget) +{ + widget->m_visible_with_childs = gRegion(); + for (ePtrList<eWidget>::iterator i(widget->m_childs.begin()); i != widget->m_childs.end(); ++i) + clearVisibility(*i); +} |
