diff -r a1caeb42b3a3 -r fcdfafb36fe7 uifw/EikStd/coctlsrc/EikCcpu.cpp --- a/uifw/EikStd/coctlsrc/EikCcpu.cpp Thu Jul 15 18:56:19 2010 +0300 +++ b/uifw/EikStd/coctlsrc/EikCcpu.cpp Thu Aug 19 10:11:06 2010 +0300 @@ -29,6 +29,9 @@ const TInt KRightSoftkeyIndex = 2; const TInt KNullCommandId = -1; +// declare the function IsCbaEmbeddedInDialog +TBool IsCbaEmbeddedInDialog( const TInt& aFlags ); + /** * Internal extension class for CAknCcpuSupport. * @@ -150,7 +153,7 @@ if( eikAppUi && eikAppUi->IsDisplayingDialog() && eikAppUi->TopFocusedControl() ) { CEikDialog* dlg = eikAppUi->TopFocusedControl()->MopGetObject( dlg ); - if ( dlg ) + if ( dlg && IsCbaEmbeddedInDialog( dlg->DialogFlags() ) ) { CEikButtonGroupContainer* currentCba = dlg->MopGetObject( currentCba ); @@ -336,3 +339,19 @@ } } } + +/** + * To detect if CBA is embedded in the diaplog. + * @param aFlags it should be CEikDialog::DialogFlags() + * @return if an CBA is embedded in the dialog return ETrue + * else return EFalse + */ +TBool IsCbaEmbeddedInDialog( const TInt& aFlags ) + { + return !( aFlags & EEikDialogFlagFillAppClientRect ) && + !( aFlags & EEikDialogFlagFillScreen ) && + !( aFlags & EEikDialogFlagVirtualInput ) && + !( aFlags & EEikDialogFlagNoEmbeddedSoftkeys ); + } + +