diff -r 7be2816dbabd -r 137ebc85284b menufw/menufwui/matrixmenu/src/mmappui.cpp --- a/menufw/menufwui/matrixmenu/src/mmappui.cpp Tue May 11 16:02:39 2010 +0300 +++ b/menufw/menufwui/matrixmenu/src/mmappui.cpp Tue May 25 12:29:32 2010 +0300 @@ -12,8 +12,8 @@ * Contributors: * * Description: Application UI class -* Version : %version: MM_176.1.28.1.75 % << Don't touch! Updated by Synergy at check-out. -* Version : %version: MM_176.1.28.1.75 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_176.1.28.1.78 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_176.1.28.1.78 % << Don't touch! Updated by Synergy at check-out. * */ @@ -46,7 +46,7 @@ #include #include #include //stylus popup for long tap event -#include +#include #include "mmgui.hrh" #include "mmguiconstants.h" @@ -332,10 +332,13 @@ { //make dummy container visible when returning //to menu by AppKey - iDummyContainer->MakeVisible( ETrue ); - RefreshUiPanesL( ETrue ); - iCurrentContainer->MakeVisible( EFalse ); - iDummyContainer->DrawNow(); + if( iDummyContainer && iCurrentContainer ) + { + iDummyContainer->MakeVisible( ETrue ); + RefreshUiPanesL( ETrue ); + iCurrentContainer->MakeVisible( EFalse ); + iDummyContainer->DrawNow(); + } CleanupForExitL( EExitKeyApplication ); User::LeaveIfError( iCoeEnv->WsSession().SetWindowGroupOrdinalPosition( CEikonEnv::Static()->RootWin().Identifier(), 0 ) ); @@ -1448,9 +1451,9 @@ RefreshCbaL(); iGarbage.ResetAndDestroy(); ResetContainerMap(); - iCurrentSuiteModel = NULL; - iCurrentContainer = NULL; - } + iCurrentSuiteModel = NULL; + iCurrentContainer = NULL; + } TRAPD( err, iHNInterface->LoadSuitesFromUriL( aMessage ) ); @@ -1806,9 +1809,10 @@ iToolbar->SetToolbarVisibility( EFalse ); } + TBool scrollView( EFalse ); if( iCurrentContainer != aWidgetContainer ) { - // During open new folder cancel longTap. + // During open new folder cancel longTap. if( iCurrentContainer && iCurrentContainer->IsEditMode() ) iCurrentContainer->EnableLongTapAnimation( EFalse ); @@ -1827,26 +1831,7 @@ { iCurrentContainer->SetHighlightVisibilityL( ETrue ); } - - // force scroll view to highlighted item in case we've been backing back - // and change presentation mode (to list view) had been done. - if( iCurrentContainer->WidgetType() == EListWidget ) - { - TInt offsetBottom = - iCurrentContainer->Widget()->View()->ItemPos( - iCurrentSuiteModel->GetSuiteHighlight() ).iY - + iCurrentContainer->Widget()->ItemHeight() - - iCurrentContainer->Widget()->View()->ViewRect().Height(); - TInt offsetTop = iCurrentContainer->Widget()->View()->ItemPos( - iCurrentSuiteModel->GetSuiteHighlight() ).iY; - TBool takeTop = Abs( offsetTop ) < Abs( offsetBottom ); - TInt offset = ( takeTop ) ? offsetTop : offsetBottom; - if( offset != 0 ) - { - iCurrentContainer->Widget()->HandlePhysicsScrollEventL( - offset ); - } - } + scrollView = ETrue; } else { @@ -1896,6 +1881,16 @@ // restore the correct widget position iCurrentContainer->RestoreWidgetPosition(); + // force scroll view to highlighted item in case we've been backing back + // and change presentation mode (to list view) had been done. + if( scrollView && iCurrentContainer->WidgetType() == EListWidget + && iCurrentSuiteModel->GetSuiteHighlight() > KErrNotFound + && !iCurrentContainer->ItemIsFullyVisible( + iCurrentSuiteModel->GetSuiteHighlight() )) + { + iCurrentContainer->ScrollToItemL( + iCurrentSuiteModel->GetSuiteHighlight() ); + } } // refresh changed items only