--- 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 );
+ }
+
+