622 CXnPluginData::DestroyPublishers( aReason ); |
622 CXnPluginData::DestroyPublishers( aReason ); |
623 |
623 |
624 __PRINTS( "*** CXnViewData::DestroyPublishers - done" ); |
624 __PRINTS( "*** CXnViewData::DestroyPublishers - done" ); |
625 } |
625 } |
626 |
626 |
|
627 // ----------------------------------------------------------------------------- |
|
628 // ----------------------------------------------------------------------------- |
|
629 // |
|
630 TXnDirtyRegion* CXnViewData::DirtyRegionL( CXnNode& aNode ) |
|
631 { |
|
632 // First make sure that the given node is "window owning" |
|
633 CCoeControl* control( aNode.Control() ); |
|
634 if( !control || !control->OwnsWindow() ) |
|
635 { |
|
636 return NULL; |
|
637 } |
|
638 |
|
639 if( iDirtyRegion && iDirtyRegion->iControl == control ) |
|
640 { |
|
641 return iDirtyRegion; |
|
642 } |
|
643 |
|
644 // in case of widget extension / popup, a widget may own window |
|
645 for( TInt i = 0; i < iPluginsData.Count(); i++ ) |
|
646 { |
|
647 TXnDirtyRegion* region( iPluginsData[i]->DirtyRegion() ); |
|
648 if( region && region->iControl == control ) |
|
649 { |
|
650 return region; |
|
651 } |
|
652 } |
|
653 |
|
654 // Region not found, create a new one |
|
655 CXnPluginData* pluginData( Plugin( &aNode ) ); |
|
656 if( pluginData ) |
|
657 { |
|
658 return pluginData->CreateDirtyRegionL( aNode, *control ); |
|
659 } |
|
660 |
|
661 return NULL; |
|
662 } |
|
663 |
|
664 // ----------------------------------------------------------------------------- |
|
665 // ----------------------------------------------------------------------------- |
|
666 // |
|
667 void CXnViewData::GetDirtyRegions( RPointerArray<TXnDirtyRegion>& aList ) |
|
668 { |
|
669 if( iDirtyRegion ) |
|
670 { |
|
671 aList.Append( iDirtyRegion ); |
|
672 } |
|
673 for( TInt i = 0; i < iPluginsData.Count(); i++ ) |
|
674 { |
|
675 TXnDirtyRegion* region( iPluginsData[i]->DirtyRegion() ); |
|
676 if( region ) |
|
677 { |
|
678 aList.Append( region ); |
|
679 } |
|
680 } |
|
681 } |
|
682 |
627 // End of file |
683 // End of file |