--- a/uiacceltk/hitchcock/coretoolkit/src/HuiLayout.cpp Tue Feb 02 07:56:43 2010 +0200
+++ b/uiacceltk/hitchcock/coretoolkit/src/HuiLayout.cpp Fri Mar 19 09:43:21 2010 +0200
@@ -56,8 +56,7 @@
{
CHuiVisual::ConstructL();
iHuiLayoutPrivateData = new (ELeave) THuiLayoutPrivateData;
- CHuiRenderPlugin& renderplugin = CHuiStatic::Renderer();
- iHuiLayoutPrivateData->iGc = renderplugin.CreateCanvasGcL();
+ iHuiLayoutPrivateData->iGc = NULL;
}
@@ -74,6 +73,7 @@
}
iHuiLayoutPrivateData->iChildren.Reset();
delete iHuiLayoutPrivateData->iGc;
+ iHuiLayoutPrivateData->iGc = NULL;
delete iHuiLayoutPrivateData;
}
}
@@ -311,12 +311,8 @@
TInt count = Count();
for(TInt i = 0; i < count; ++i)
{
- //Ignore inactive child visuals
- if ( iHuiLayoutPrivateData->iChildren[i]->Flags() & EHuiVisualFlagInactive )
- {
- continue;
- }
- UpdateChildLayout(i, aTransitionTime);
+ // size and positio changes must go also to inactive visuals
+ UpdateChildLayout(i, aTransitionTime);
}
CHuiVisual::UpdateChildrenLayout(aTransitionTime);
@@ -687,7 +683,7 @@
TInt count = Count();
for(TInt i = 0; i < count; ++i)
{
- if (Flags() & EHuiVisualFlagInactive)
+ if (iHuiLayoutPrivateData->iChildren[i]->Flags() & EHuiVisualFlagInactive)
{
// No need to clear inactive children
continue;
@@ -1120,6 +1116,13 @@
void CHuiLayout::DrawStoredBitmap(CHuiGc &aGc) const
{
if (!Display()) return;
+
+ if (!iHuiLayoutPrivateData->iGc)
+ {
+ CHuiRenderPlugin& renderplugin = CHuiStatic::Renderer();
+ // deleted in destructor or CHuiCanvasVisual::FreeRenderBuffer when not needed anymore
+ iHuiLayoutPrivateData->iGc = renderplugin.CreateCanvasGcL();
+ }
CHuiCanvasGc& gc = *iHuiLayoutPrivateData->iGc;
gc.SetGc(aGc);
gc.SetDefaults();