uifw/AvKon/src/aknnavi.cpp
branchRCL_3
changeset 64 85902f042028
parent 56 d48ab3b357f1
child 72 a5e7a4f63858
--- a/uifw/AvKon/src/aknnavi.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/AvKon/src/aknnavi.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -32,6 +32,8 @@
 #include <akniconconfig.h>
 
 #include <AknTasHook.h>
+#include <AknPriv.hrh>
+
 // USER INCLUDE FILES
 #include "aknenv.h"
 #include "AknDef.h"
@@ -2008,26 +2010,47 @@
 //
 void CAknNavigationControlContainer::HandleLosingForeground()
     {
-    // If volume popup is shown when the navi pane loses foreground,
-    // then the popup needs to be closed if shown, and the volume control
-    // told that it's not the topmost control.    
+    // Get the top control on navi pane.
     CAknNavigationDecorator* topControl = Top();
     
     if ( topControl )
         {
-        if ( topControl &&
-             topControl->ControlType() == CAknNavigationDecorator::ENaviVolume )
+        switch( topControl->ControlType() )
             {
-            CAknVolumePopup* volumePopup =
-                static_cast<CAknVolumePopup*> (
-                    topControl->iDecoratedControl );
+            case CAknNavigationDecorator::ENaviVolume:
+                {
+                // If volume popup is shown when the navi pane loses foreground,
+                // then the popup needs to be closed if shown, and the volume control
+                // told that it's not the topmost control.  
+                CAknVolumePopup* volumePopup =
+                    static_cast<CAknVolumePopup*> (
+                        topControl->iDecoratedControl );
 
-            if ( volumePopup )
+                if ( volumePopup )
+                    {
+                    volumePopup->CloseVolumePopup();
+                    static_cast<CAknVolumeControl*>(
+                        topControl->DecoratedControl() )->HandleNaviStackChange( EFalse );
+                    }
+                break;
+                }
+            case CAknNavigationDecorator::ETabGroup:
                 {
-                volumePopup->CloseVolumePopup();
-                static_cast<CAknVolumeControl*>(
-                    topControl->DecoratedControl() )->HandleNaviStackChange( EFalse );
+                // If tabgroup is shown when navi pane loses foreground, forward 
+                // KAknMessageFocusLost event to tabgroup. Tab panes will stop highlighting
+                // the pressed tab.
+                CAknTabGroup* tabGroup =
+                       static_cast<CAknTabGroup*> (
+                           topControl->iDecoratedControl );
+
+                if ( tabGroup )
+                    {
+                    tabGroup->HandleResourceChange(KAknMessageFocusLost);
+                    }
+                break;
                 }
+            default:
+                break;
             }
         }
     }