uifw/AvKon/src/AknViewAppUi.cpp
branchRCL_3
changeset 38 c52421ed5f07
parent 29 a8834a2e9a96
child 51 fcdfafb36fe7
equal deleted inserted replaced
29:a8834a2e9a96 38:c52421ed5f07
   317 	{
   317 	{
   318 	const TInt count( iViews->Count() );
   318 	const TInt count( iViews->Count() );
   319 	
   319 	
   320 	for ( TInt i = 0; i < count; ++i )
   320 	for ( TInt i = 0; i < count; ++i )
   321 		{
   321 		{
   322 		CAknView* view( iViews->At( i ) );
   322         CAknView* view( iViews->At( i ) );
   323 		
   323         if ( view->Id() == aViewId )
   324 		if ( view->Id() == aViewId )
   324             {
   325 			{
   325             // remove the deleted view from iExtensione's list. Or the pointer 
   326 			iViews->Delete( i );
   326             // is invalid 
   327 			CCoeAppUi::DeregisterView( *view );
   327             TInt index = iExtension->iActiveViews.Find(view);
   328 			delete view;
   328             if ( index >= 0 && index < iExtension->iActiveViews.Count() )
   329 			return;
   329                 {
   330 			}
   330                 iExtension->iActiveViews.Remove(index);
       
   331                 view->AknViewDeactivated();
       
   332                 } 
       
   333                 
       
   334                 iViews->Delete( i );
       
   335                 CCoeAppUi::DeregisterView( *view );
       
   336                 delete view;
       
   337                 return;
       
   338             }
   331 		}
   339 		}
   332 	}
   340 	}
   333 
   341 
   334 // -----------------------------------------------------------------------------
   342 // -----------------------------------------------------------------------------
   335 // CAknViewAppUi::View
   343 // CAknViewAppUi::View
   616             
   624             
   617             // Number of views is always smaller than already reserved array 
   625             // Number of views is always smaller than already reserved array 
   618             // (default granularity is 8) -> no memory allocation failures.
   626             // (default granularity is 8) -> no memory allocation failures.
   619             if ( splitView )
   627             if ( splitView )
   620                 {
   628                 {
   621                 iExtension->iActiveViews.Append( View( splitView->iViewIds[0] ) );
   629                 error = iExtension->iActiveViews.Append( View( splitView->iViewIds[0] ) );
   622                 iExtension->iActiveViews.Append( View( splitView->iViewIds[1] ) );
   630                 if (KErrNone == error)
       
   631                     {
       
   632                     error = iExtension->iActiveViews.Append( View( splitView->iViewIds[1] ) );
       
   633                     }
   623                 }
   634                 }
   624             else
   635             else
   625                 {
   636                 {
   626                 iExtension->iActiveViews.Append( item->iNewView );
   637                 error = iExtension->iActiveViews.Append( item->iNewView );
   627                 }
   638                 }
   628 
   639 
   629             iView = item->iNewView;
   640             iView = item->iNewView;
   630             }
   641             }
   631         else
   642         else