uifw/EikStd/coctlsrc/EikCcpu.cpp
branchRCL_3
changeset 18 fcdfafb36fe7
parent 6 9f56a4e1b8ab
child 19 aecbbf00d063
--- 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 );
+    }
+
+