idlehomescreen/xmluirendering/uiengine/src/xnviewdata.cpp
branchRCL_3
changeset 93 b01126ce0bec
parent 88 3321d3e205b6
child 102 ba63c83f4716
--- a/idlehomescreen/xmluirendering/uiengine/src/xnviewdata.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewdata.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -624,4 +624,60 @@
     __PRINTS( "*** CXnViewData::DestroyPublishers - done" );
     }
 
+// -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+//
+TXnDirtyRegion* CXnViewData::DirtyRegionL( CXnNode& aNode )
+    {
+    // First make sure that the given node is "window owning"
+    CCoeControl* control( aNode.Control() );  
+    if( !control || !control->OwnsWindow() )
+        {
+        return NULL;
+        }
+
+    if( iDirtyRegion && iDirtyRegion->iControl == control )
+        {
+        return iDirtyRegion;
+        }
+
+    // in case of widget extension / popup, a widget may own window
+    for( TInt i = 0; i < iPluginsData.Count(); i++ )
+        {
+        TXnDirtyRegion* region( iPluginsData[i]->DirtyRegion() );
+        if( region && region->iControl == control )
+            {
+            return region;
+            }
+        }
+
+    // Region not found, create  a new one
+    CXnPluginData* pluginData( Plugin( &aNode ) );
+    if( pluginData )
+        {
+        return pluginData->CreateDirtyRegionL( aNode, *control );
+        }    
+
+    return NULL;
+    }
+
+// -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+//
+void CXnViewData::GetDirtyRegions( RPointerArray<TXnDirtyRegion>& aList )
+    {
+    if( iDirtyRegion )
+        {
+        aList.Append( iDirtyRegion );
+        }
+    for( TInt i = 0; i < iPluginsData.Count(); i++ )
+        {
+        TXnDirtyRegion* region( iPluginsData[i]->DirtyRegion() );
+        if( region )
+            {
+            aList.Append( region );
+            }
+        }
+    }
+
 // End of file