uiacceltk/hitchcock/coretoolkit/src/HuiLayout.cpp
branchRCL_3
changeset 3 d8a3531bc6b8
parent 0 15bf7259bb7c
child 49 c9d868f1e20c
--- a/uiacceltk/hitchcock/coretoolkit/src/HuiLayout.cpp	Tue Feb 02 07:56:43 2010 +0200
+++ b/uiacceltk/hitchcock/coretoolkit/src/HuiLayout.cpp	Mon Feb 22 17:57:49 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();