diff -r a1caeb42b3a3 -r fcdfafb36fe7 uifw/EikStd/coctlsrc/aknstyluspopupmenu.cpp --- a/uifw/EikStd/coctlsrc/aknstyluspopupmenu.cpp Thu Jul 15 18:56:19 2010 +0300 +++ b/uifw/EikStd/coctlsrc/aknstyluspopupmenu.cpp Thu Aug 19 10:11:06 2010 +0300 @@ -46,11 +46,13 @@ // CAknStylusPopUpMenu::CAknStylusPopUpMenu( MEikMenuObserver* aObserver, const TPoint& aPoint, - CAknPreviewPopUpController* aPopup ) + CAknPreviewPopUpController* aPopup, + const TInt aFlags ) : iPosition ( aPoint ), iMenuObserver( aObserver ), iPreviewPopup( aPopup ), - iPositionType( EPositionTypeLeftTop ) + iPositionType( EPositionTypeLeftTop ), + iModeFlags ( aFlags ) { } @@ -83,6 +85,24 @@ return self; } +// --------------------------------------------------------------------------- +// CAknStylusPopUpMenu::NewL +// --------------------------------------------------------------------------- +// +CAknStylusPopUpMenu* CAknStylusPopUpMenu::NewL( MEikMenuObserver* aObserver, + const TPoint& aPoint, + CAknPreviewPopUpController* aPopup, + const TInt aFlags ) + { + CAknStylusPopUpMenu* self = new ( ELeave ) CAknStylusPopUpMenu( aObserver, + aPoint, + aPopup, + aFlags ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } // --------------------------------------------------------------------------- // CAknStylusPopUpMenu::NewL @@ -181,11 +201,25 @@ // if contoller exists, re-use it . if ( !iController ) { - TRAPD( err, - iController = CAknPreviewPopUpController::NewL( *iContent, - CAknPreviewPopUpController::ELayoutSubMenu | - CAknPreviewPopUpController::EAutoMirror | - CAknPreviewPopUpController::EDontClose ) ); + TInt err ( KErrNone ); + + if ( iModeFlags & EConsumeKeyEvents ) + { + TRAP( err, iController = CAknPreviewPopUpController::NewL( + *iContent, + CAknPreviewPopUpController::ELayoutSubMenu | + CAknPreviewPopUpController::EAutoMirror | + CAknPreviewPopUpController::EDontClose | + CAknPreviewPopUpController::EConsumeKeys ) ); + } + else + { + TRAP( err, iController = CAknPreviewPopUpController::NewL( + *iContent, + CAknPreviewPopUpController::ELayoutSubMenu | + CAknPreviewPopUpController::EAutoMirror | + CAknPreviewPopUpController::EDontClose ) ); + } if ( err ) { return; @@ -485,6 +519,20 @@ } } + +// --------------------------------------------------------------------------- +// CAknStylusPopUpMenu::HideMenu +// --------------------------------------------------------------------------- +// +void CAknStylusPopUpMenu::HideMenu() + { + if ( iController ) + { + iController->HidePopUp(); + } + } + + // ----------------------------------------------------------------------------- // CAknStylusPopUpMenu::StartControllerIdleL // ----------------------------------------------------------------------------- @@ -535,7 +583,7 @@ // CAknStylusPopUpMenu::CleanLocalRef // ----------------------------------------------------------------------------- // -void CAknStylusPopUpMenu::CleanLocalRef( TAny* any ) +void CAknStylusPopUpMenu::CleanLocalRef( TAny* aParam ) { - static_cast( any )->iIsDeleted = NULL; + static_cast( aParam )->iIsDeleted = NULL; }