diff -r 8592a65ad3fb -r b13141f05c3d emailuis/emailui/src/FreestyleEmailUiHtmlViewerView.cpp --- a/emailuis/emailui/src/FreestyleEmailUiHtmlViewerView.cpp Wed Apr 14 15:42:15 2010 +0300 +++ b/emailuis/emailui/src/FreestyleEmailUiHtmlViewerView.cpp Tue Apr 27 16:20:14 2010 +0300 @@ -135,6 +135,7 @@ iEmbeddedMessages = new (ELeave) CStack(); iNextOrPrevMessageSelected = EFalse; iForwardingMessage = EFalse; + iMessageIsDeleted = EFalse; } // ----------------------------------------------------------------------------- @@ -757,7 +758,10 @@ } case EFsEmailUiTbCmdDelete: { - HandleCommandL(EFsEmailUiCmdActionsDelete); + iAsyncCallback->Cancel(); + iAsyncCallback->Set( TCallBack( DeleteMail, this ) ); + iAsyncCallback->SetPriority( CActive::EPriorityHigh ); + iAsyncCallback->CallBack(); break; } case EFsEmailUiTbCmdReplyAll: @@ -911,12 +915,15 @@ // In usual case we use the base view implementation else { - iMessage = NULL; - CancelFetchings(); - CFsEmailUiViewBase::NavigateBackL(); + + if ( iContainer ) + { + HideContainer(); + iContainer->ResetContent(); + } } } @@ -1169,7 +1176,16 @@ } } -void CFsEmailUiHtmlViewerView::DeleteMailL(TBool aSilentDelete) +TInt CFsEmailUiHtmlViewerView::DeleteMail( TAny* aSelf ) + { + FUNC_LOG; + CFsEmailUiHtmlViewerView* self = + static_cast( aSelf ); + TRAP_IGNORE( self->DeleteMailL( EFalse ) ); + return KErrNone; + } + +void CFsEmailUiHtmlViewerView::DeleteMailL( TBool aSilentDelete ) { FUNC_LOG; @@ -1228,7 +1244,11 @@ //Open the previous message or navigate back to list viewer if ( available ) { - iAppUi.MoveToPreviousMsgAfterDeleteL( prevMsgId ); + iMessageIsDeleted = ETrue; + TRAPD( err, iAppUi.MoveToPreviousMsgAfterDeleteL( prevMsgId ) ); + iMessageIsDeleted = EFalse; + + User::LeaveIfError( err ); } else { @@ -1264,7 +1284,7 @@ { cont = EFalse; ChangeMskCommandL( R_FSE_QTN_MSK_EMPTY ); - if(aEvent == TFSEventMailDeleted) + if( aEvent == TFSEventMailDeleted && !iMessageIsDeleted ) { //Delete event came from server; close the viewer. HandleCommandL( EAknSoftkeyBack ); // The message we are viewing was deleted => stop here @@ -1962,7 +1982,10 @@ iAppUi.MoveToNextMsgL( currentMsgId, nextMsgId ); // Next message is displayed in this view through doactivate, because view is re-activate by mail list - RestoreZoomLevelL(); + if ( iContainer ) + { + RestoreZoomLevelL(); + } } } } @@ -2011,7 +2034,10 @@ iAppUi.MoveToPreviousMsgL( currentMsgId, prevMsgId ); // Previous message is displayed in this view through doactivate, because view is re-activate by mail list - RestoreZoomLevelL(); + if ( iContainer ) + { + RestoreZoomLevelL(); + } } } } @@ -2062,6 +2088,7 @@ iMoveDestinationFolder = aSelectedFolderId; iAsyncCallback->Cancel(); // cancel any outstanding callback just to be safe iAsyncCallback->Set( TCallBack( MoveToFolderAndExitL, this ) ); + iAsyncCallback->SetPriority( CActive::EPriorityLow ); iAsyncCallback->CallBack(); } break;